请问怎样在SQL的触发器里定位某一行!比如说我有一个表的数量更新另一个表的数量(加减)用某一条件更新?(100分)

  • 主题发起人 主题发起人 linbz
  • 开始时间 开始时间
L

linbz

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样在SQL的触发器里定位某一行!比如说我有一个表的数量更新另一个表的数量(加减)用某一条件更新?
 
说清楚呀,看不懂?
 
在MS SQL Server触发器中,使用inserted 表和deleted表。
update table2 set field1=field1+i.field1
from inserted i where table2.关键字=i.关键字
或者
update table2 set field1=field1 -d.field1
from deleted d where table2.关键字=d.关键字
 
怎样传递参数给触发器!
 
beforepost读取数字放入全局变量,在再afterpost中加入更改的代码
太简单了 ^-^
 
to zhbj2:
能举个列吗?谢谢!
 
使用游标:Cursor;
CREATE TRIGGER ut_AgentPay_D ON AgentPay FOR DELETE AS
BEGIN --BEGIN DELETE
DECLARE @CustNo_D VARCHAR(8) ,@ThisRec_D Money , @Cancel_D BIT , @CheckNo_D VarChar(4)
----------更新 Customer 表 MustRec / HavedRec 字段------------------
DECLARE AgentPay_Cursor_D CURSOR FOR SELECT CustNo , Cancel , CheckNo , ThisRec From Deleted ;
--定义游标
OPEN AgentPay_Cursor_D
--打开游标
FETCH NEXT FROM AgentPay_Cursor_D INTO @CustNo_D , @Cancel_D , @CheckNo_D , @ThisRec_D
--取第一行值
WHILE @@FETCH_STATUS = 0
--是否正确取出值
BEGIN
IF ( @Cancel_D = 0 ) AND ( NOT @CheckNo_D IS NULL )
UPDATE Customer SET MustRec = MustRec + @ThisRec_D WHERE CustNo = @CustNo_D
--删除收款单时应收款应增加

FETCH NEXT FROM AgentPay_Cursor_D INTO @CustNo_D , @Cancel_D , @CheckNo_D , @ThisRec_D
--取游标下一行
END
CLOSE AgentPay_Cursor_D
--关闭游标
DEALLOCATE AgentPay_Cursor_D
--释放资源
END -- END DELETE
 
接受答案了.
 
后退
顶部