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