简体   繁体   English

SQL触发器中的IN语句错误

[英]IN statement error in SQL triggers

I have a trigger that insert value to a another table based on a condition, in my condition thare is an IN statement within IF condition when im trying to insert multiple values using "INSERT INTO SELECT FROM" it returns following error "Subquery returned more than 1 value. This is not permitted when..." 我有一个触发器,可以根据条件将值插入到另一个表中,在我的条件中,当我尝试使用“ INSERT INTO SELECT FROM”插入多个值时,IF条件中的一个IN语句将返回以下错误“子查询返回的结果超过1个值。当...时不允许使用。”

here is my code 这是我的代码

    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

it works for single value but not for multiple value inserting "INSERT INTO SELECT FROM" thanks in advance 它适用于单个值,但不适用于多个值插入“ INSERT INTO SELECT FROM”表示感谢

As mentioned by Mitch trigger doesn't fire for each row. 如Mitch所述, trigger不会为每一行trigger If am not wrong this is what you need. 如果没错,这就是您所需要的。

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