SQL在更新后创建触发器

时间:2013-11-13 12:47:04

标签: sql

我有两张桌子。一张桌子是餐厅,另一张是restaurant_changes。餐厅包含属性,身份证,姓名,地址,城市,州,邮编。虽然restaurant_changes包含所有这些,但也包含时间戳。

每当对餐厅进行更改时,我都希望在restaurant_changes表中注明。它通过在更改之前存储时间戳和行的其余部分来实现。因此,如果餐馆名称在restaurant_changes中从A更改为B,则将存储名称A.

这是我正在尝试做的事情,我希望能够朝着正确的方向前进。

create trigger change_restaurant after update on restaurant
referencing old table as otab
referencing new table as tab
Declare @today DATETIME = SYSDATETIME()
for each row
    insert into restaurant_changes 
    select(@today, otab.id, otab.name, otab.address, otab.city, otab.state, otab.zip
    from otab
    inner join ntab
    on otab.id = ntab.id)

1 个答案:

答案 0 :(得分:0)

看起来这就是你想要的(只是模仿你假设的语法):

create trigger change_restaurant after update on restaurant
referencing old as old
Declare @today DATETIME = SYSDATETIME()
for each row
    insert into restaurant_changes values
    (@today, old.id, old.name, old.address, old.city, old.state, old.zip)

参考old_table与'for each row'结合使用没有多大意义。如果你想使用old_table,你应该为每个语句声明'。