如何在SQL Trigger中获取更新列的值

时间:2014-09-03 20:48:18

标签: sql sql-server

我在SQL中有一个没有错误的触发器。但是,它无法实现所需的行为。我想要做的是,当用户更新field1列时,获取该值,并将该值和与该值相关的信息插入到不同的数据库表中。它没有按预期插入。这是触发器:

ALTER TRIGGER [dbo].[Trigger1]
   ON  [dbo].[table1]
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @UpdatedVendId CHAR

    SELECT
      @UpdatedVendId = inserted.VendId
    FROM
      inserted


    IF UPDATE (VendID)
    BEGIN   INSERT INTO OtherTable (ClassID, Crtd_User, LUpd_DateTime, LUpd_User, VendId) SELECT ClassID, crtd_User, LUpd_DateTime, LUpd_User, VendId FROM dbo.table1 WHERE VendId = @UpdatedVendId

    END
END

1 个答案:

答案 0 :(得分:1)

要解决多行操作的问题,可以使用插入的虚拟表大大简化触发器。您的触发器的整个内容可以缩短为此。

IF UPDATE (VendID)
    INSERT INTO OtherTable 
    (
        ClassID
        , Crtd_User
        , LUpd_DateTime
        , LUpd_User
        , VendId
    ) 
    SELECT t1.ClassID
        , t1.crtd_User
        , t1.LUpd_DateTime
        , t1.LUpd_User
        , t1.VendId 
    FROM dbo.table1 t1
    join inserted i on i.ClassID = t.ClassID