[英]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.