请问等效的SQL Server 2012代码是什么?
IF INSERTING THEN
:NEW.audsid:=SYS_CONTEXT('USERENV', 'SESSIONID');
答案 0 :(得分:2)
Oracle和SQL Server处理触发器的方式截然不同。 Oracle的概念是触发器一次只影响一行。 SQL Server没有。相反,它使用"表" inserted
包含新行。
所以,你的问题有三个部分:
INSERTED
?SYS_CONTEXT('USERENV', 'SESSIONID')
?以下是前两个问题的答案:
if (exists (select 1 from inserted) and (not exists (select 1 from deleted))
update inserted
set audsid = @@SPID;
但是,在大多数情况下,您只需在列定义中使用default
关键字:
audsid int default @@SPID
更容易,并且不需要触发器。