我在表上有一个插入触发器。该表格有一列source
。
可以使用值b填充source
列,或者将其留空,如空。
如果source
列未填充“b”,我希望触发器仅触发。下面的触发器代码不会给我错误,它只是永远不会运行。
如果我删除它运行的if
条件,但我需要在它运行之前检查'b'的值。
Create TRIGGER TriggerName
ON tableName
FOR INSERT
AS
BEGIN
DECLARE @source nvarchar(50)
SELECT
@source = (select source from inserted)
if not (@source = 'b')
begin
INSERT INTO ATable(field1, field2, field3)
SELECT
i.field1, i.field2, i.field3
FROM
inserted i
end
end
答案 0 :(得分:2)
您的触发器不会处理多行操作。您不应该在触发器中使用标量值。你的整个触发器应该像这样重写。
INSERT INTO ATable
(
field1
, field2
, field3
)
SELECT i.field1
, i.field2
, i.field3
FROM inserted i
WHERE i.source = 'b'