0

私は2つのテーブルを持っています。1 つのテーブルはレストランで、もう 1 つは restaurant_changes です。レストランには属性、ID、名前、住所、都市、州、郵便番号が含まれています。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 ステートメント」を宣言する必要があります。

于 2013-11-13T13:08:26.670 に答える