繁体   English   中英

SQL Server 2012中的Oracle AUDSID等效项

[英]Oracle AUDSID equivalent in SQL Server 2012

请问与此等效的SQL Server 2012代码是什么?

 IF INSERTING THEN
            :NEW.audsid:=SYS_CONTEXT('USERENV', 'SESSIONID');

Oracle和SQL Server处理触发器的方式非常不同。 Oracle的概念是触发器一次只影响一行。 SQL Server没有。 相反,它使用inserted新行的“表”。

因此,您的问题分为三个部分:

  1. 相当于INSERTED
  2. SYS_CONTEXT('USERENV', 'SESSIONID')的等效项是什么?
  3. 在SQL Server中执行此操作的最佳方法是什么?

这是前两个问题的答案:

if (exists (select 1 from inserted) and (not exists (select 1 from deleted))
    update inserted
        set audsid = @@SPID;

但是,在大多数情况下,只需在列定义中使用default关键字:

audsid int default @@SPID

容易得多,不需要触发器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM