2014-09-23 54 views
0

有人可以解释FROM之后的INSERTED含义吗?触发器中没有INSERTED Table,它有下面的sql。 INSERTED是否参考有触发器的表格?了解SQL CURSOR语句

DECLARE ChgCursor CURSOR FOR SELECT ACCID,USERID,GCID,........ FROM INSERTED 
    SELECT @ppid = ppid FROM sysdba.SYSTEMINFO WHERE SYSTEMINFOID = 'PR111' 

回答

2

一个SQL Server触发器具有两个表:

  • Inserted其中包含新插入的行(在INSERT触发器)或在UPDATE触发

    更新(新)值
  • Deleted,其中包含已删除的行(在DELETE触发器中)或旧值(b安伏在UPDATE触发

两个表存在于更新)触发器内仅并且将具有相同的列,因为它们可以“连接”到下面的表(由所述触发的装置被定义在桌子)。

SQL Server的触发器将每条语句被解雇一次(不是每行一次),因此,如果任何语句影响多个行,然后Inserted和/或Deleted包含多行 - 你总是需要记住这一点并相应地编写你的触发器。

查看更多详情如这里Data Points: Exploring SQL Server triggers

和警告的话:在SQL Server中的触发器应始终很精简的意思是 - 做做延伸,并在触发耗时的处理,这也意味着尽量避免游标在触发器中的难度至少是您在其他T-SQL代码中的两倍。