sql 触发器 update的问题

悬赏分:20|
CREATE TRIGGER GXDHSL ON RKD
FOR UPDATE
AS
DECLARE @DHDH VARCHAR(50) --计划单号
DECLARE @SL decimal(18,6) --修改前数量
DECLARE @DHSL decimal(18,6) --修改后数量
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
go
但是RKD这张表在其它操作的时候还会更新 SHBZ和JZBZ这两个字段,我想更新SHBZ和JZBZ的时候不触发触发器。不知道怎么写?
知识库标签: 触发器   |列兵
使用更新什么字段才执行触发器就行了
CREATE TRIGGER GXDHSL ON RKD
FOR UPDATE
AS
IF(Update(字段名))
begin
DECLARE @DHDH VARCHAR(50) --计划单号
DECLARE @SL decimal(18,6) --修改前数量
DECLARE @DHSL decimal(18,6) --修改后数量
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
end
go
为最佳答案评分?
100% (1)
不好 0% (0)
(目前有 1 个人评价)

其 他 回 答共3条

1楼

if @SL!=@DHSL
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
知识库标签: |列兵

2楼


你这个表的操作只是对表的更新的时间有作用的,updete所对应的表是inserted和deleted
知识库标签: |列兵

我来回答这个问题

立即登陆回答获取会员积分,提高用户级别
友情链接:
Copyright © 商名网 All Rights Reserved.