插入特定列的触发器检查

时间:2014-09-09 16:01:22

标签: sql sql-server

我在表上有一个插入触发器。该表格有一列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

1 个答案:

答案 0 :(得分:2)

您的触发器不会处理多行操作。您不应该在触发器中使用标量值。你的整个触发器应该像这样重写。

INSERT INTO ATable
(
    field1
    , field2
    , field3
)  
SELECT i.field1
    , i.field2
    , i.field3
FROM inserted i 
WHERE i.source = 'b'