繁体   English   中英

SQL触发器中的IN语句错误

[英]IN statement error in SQL triggers

我有一个触发器,可以根据条件将值插入到另一个表中,在我的条件中,当我尝试使用“ INSERT INTO SELECT FROM”插入多个值时,IF条件中的一个IN语句将返回以下错误“子查询返回的结果超过1个值。当...时不允许使用。”

这是我的代码

    ALTER TRIGGER [dbo].[WentOut] ON  [dbo].[TB_EVENT_LOG]
       AFTER INSERT
    AS 
    BEGIN

    DECLARE @AID int

        SET NOCOUNT ON;
        IF ((SELECT  nTNAEvent from inserted) IN(1,2,3))    
        BEGIN

            INSERT INTO Cen.WentOutLog  (AutoID, nUserID, nOutDateTime,nOutTNAEvent ,nReaderID) select nEventLogIdn,nUserID, nDateTime,nTNAEvent, nReaderIdn from inserted 

        END
END

它适用于单个值,但不适用于多个值插入“ INSERT INTO SELECT FROM”表示感谢

如Mitch所述, trigger不会为每一行trigger 如果没错,这就是您所需要的。

ALTER TRIGGER [dbo].[WentOut]
ON [dbo].[TB_EVENT_LOG]
AFTER INSERT
AS
  BEGIN
      DECLARE @AID INT

      SET NOCOUNT ON;

      IF EXISTS(SELECT nTNAEvent
                FROM   inserted
                WHERE  nTNAEvent IN ( 1, 2, 3 ))
        BEGIN
            INSERT INTO Cen.WentOutLog
                        (AutoID,nUserID,nOutDateTime,nOutTNAEvent,
                         nReaderID)
            SELECT nEventLogIdn,nUserID,nDateTime,nTNAEvent,
                   nReaderIdn
            FROM   inserted
            WHERE  nTNAEvent IN ( 1, 2, 3 )
        END
      IF EXISTS(SELECT nTNAEvent
                FROM   inserted
                WHERE  nTNAEvent IN ( 0 ))
        BEGIN
        --statement
        END
  END 

暂无
暂无

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

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