0

我有两张桌子。一张桌子是餐厅,另一张是 restaurant_changes。餐厅包含属性,id,name,address,city,state,zip。虽然 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)
4

1 回答 1

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,你应该声明'for each statement'。

于 2013-11-13T13:08:26.670 回答