簡體   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