2

現在、私のデータベース (SQL サーバー 2005 Express) には、tblDepartment と tblDepartmentcola の 2 つのテーブルがあります。2 つの違いは、"cola" には追加のブール フィールドがあることです。この質問の範囲を超えた理由で、tblDepartment に加えられた変更を tblDepartmentcola に挿入する必要があります。そのためには、トリガーを使用する必要があります。

いくつか読んだ後、一時的な「更新された」テーブルが存在しないという印象を受けましたか? これは正しいですか?。もしそうなら、どうすれば「更新された」行を選択できますか?過去に「更新された」テーブルと「削除された」テーブルから選択するトリガーを作成しましたが、これは機能しません。理由はありますか?

CREATE TRIGGER items_ ON [tblDepartment] FOR Update AS
INSERT INTO [tblDepartmentcola]
SELECT ...

go
4

2 に答える 2

0

別のテーブルに挿入するために更新されたレコードを表示する場合は、主キーが DELETED テーブル内に存在する場合に、トリガー内で INSERTED テーブルをクエリできます。

INSERT INTO TrackUpdatesTable ( PrimaryFieldId, Field1, Field2, Field3 )
SELECT I.PrimaryFieldId, I.Field1, I.Field2, I.Field3
FROM INSERTED I
JOIN DELETED D ON D.PrimaryFieldId = I.PrimaryFieldId

また

INSERT INTO TrackUpdatesTable ( PrimaryFieldId, Field1, Field2, Field3 )
SELECT I.PrimaryFieldId, I.Field1, I.Field2, I.Field3
FROM INSERTED I
WHERE EXISTS ( SELECT * FROM DELETED WHERE PrimaryFieldId = I.PrimaryFieldId )

お役に立てれば。

于 2013-09-02T15:52:21.737 に答える
0

updatedSQLサーバーにはテーブルがなくinserteddeleted

CREATE TRIGGER items_ ON [tblDepartment] after Update AS
begin
    INSERT INTO [tblDepartmentcola]
    SELECT * from inserted
end
于 2013-09-02T14:02:10.903 に答える