INSERT触发器在同一个表中更新NOT NULL字段

时间:2011-09-23 00:44:01

标签: sql sql-server-2005

我有一种情况需要将两个产品表合并为一个,并且需要保留两个id字段。 Id字段是pk和标识列。在插入时我想更新prodId以匹配新插入行的Id。这就是我所拥有的,但我得到一个错误,说我无法在ProductId中插入null。我做错了什么?

ALTER TRIGGER SyncId
    ON Product
FOR INSERT
AS
BEGIN
    DECLARE @ID INT
    SET @ID = (SELECT ID FROM Inserted)
    UPDATE Product SET
        ProdId = @ID
    WHERE
        Id = @ID    
END

1 个答案:

答案 0 :(得分:0)

您可以为INSTEAD OF创建INSERT触发器。然后,您必须重新创建实际的INSERT逻辑。您可能需要一个表格的视图才能让触发器坐下来...我不记得触发器中的INSERT是否有效且无法立即测试。

此外,您所写的触发器仅在更新单行时才有效。您应该始终编写触发器,以便能够处理INSERTEDDELETED表中的多行。