davyxjc 发表于 2010-9-6 16:16

这样触发器怎样写?

如生产订单ORD001,用料如下:
存货编号    宽度    应领数量     长度
0010      20     30
0020      40     50
0030      30     30
在保存此单时,要写一触发器,自动填写长度.计算方式为:应领数量*1000/宽度.
如:30*1000/20=1500

aei135 发表于 2010-9-6 17:59

直接把长度设置为计算字段就可以了,没必要写触发器
修改表结构长度字段为:长度 as 应领数量*1000/宽度

king029912 发表于 2010-9-7 07:48

我也想知道
计算字段只能用代码实现哇

davyxjc 发表于 2010-9-7 09:54

我并没有源代码,数据库已经做好了,所以只能写触发器解决.
我是要保存的时候就把长度填写到相应的字段中.

dwmax 发表于 2010-9-7 10:04

CREATE  TRIGGER 触发器名称
   ON  表
   AFTER INSERT

AS

declare @ID nvarchar(20)        --存货编号
declare @width numeric(10,2)    --宽度
declare @Count numeric(10,2)    --应领数量
declare @Length numeric(10,2)    --长度

select @ID=存货编号,@Count=应领数量,@width=宽度 from INSERTED

set @Length = @Count*1000/@width

update 表 set 长度 = @Length where 存货编号 = @ID

GO


但是我比较赞同 2楼 的方式。用触发器显得有点过了。。。

dwmax 发表于 2010-9-7 10:07

按照你说的,或许也只有写触发器了。

davyxjc 发表于 2010-9-7 11:21

我保存一张订单号时,要把所用的料全部计算出长度来,上面的触发器好象一次只能保存一个记录吧?
生产订单主表与子表是通过生产订单号关联的.

dwmax 发表于 2010-9-7 14:22

保存一条和保存多条,方法都是一样的。

zhaoyang1008 发表于 2010-9-19 10:27

五楼正解

页: [1]

编程论坛