0

こんにちは、MSSQL 2008 の単純なトリガーに問題があります。

削除した行を別のテーブルに挿入したい。

これが私のトリガーコードです:

use databasex;
GO
CREATE TRIGGER DeleteEmployee
ON Employees
 FOR DELETE 
AS
 BEGIN
    INSERT INTO DeletedEmployees (Name, Surname, Function) 
    VALUES (deleted.Name, deleted.Surname, deleted.Function)
 END

従業員テーブル:

 Name  Surname Function ...

DeletedEmployees テーブル:

Name Surname Function ...

削除された列が削除されたテーブルからのものであることをどうにかして指定する必要がありますが、どうすればよいですか?

すべての列にサブクエリを書きたくありません。

それはどのように行われていますか?

ps: トリガーの使用に関する適切なチュートリアルはありますか? 将来、より多くのトリガーを書く必要があると思います。

4

1 に答える 1

2

DELETED選択した仮想テーブルです (複数の行を削除した可能性があるため、単一の値では不十分です)

また、FUNCTION予約語であり、エスケープする必要があります

CREATE TRIGGER DeleteEmployee
ON Employees
 FOR DELETE 
AS
 BEGIN
    INSERT INTO DeletedEmployees (Name, Surname, [Function]) 
      SELECT Name, Surname, [Function] FROM deleted
 END

でテストする SQLfiddle

于 2013-07-10T05:45:14.430 に答える