0

テーブルの行が更新される直前に実行され、アーカイブテーブルに更新される前に行のすべてのフィールドを書き込むトリガーを作成したいと思います。アーカイブテーブルに書き込むことができるように、更新前に行フィールドにアクセスするために必要な正しい構文は何でしょうか?

編集 :

だから、これは私が望むことをするはずですが、うまくいかないようです。エラーが発生します'データベースにはconfig_SystemSettingsというオブジェクトがすでに存在します:

CREATE TRIGGER [config].[UpdateSystemSettings]

ON[config]。[SystemSetting]AFTERUPDATE AS BEGIN

SET NOCOUNT ON;

SELECT old.settingId, old.campId, old.settingKey, old.settingValue
into [history].[config_SystemSettings]
FROM [config].[SystemSetting] AS old
INNER JOIN deleted AS del ON del.settingId = old.settingId

END GO

4

1 に答える 1

0

SELECT ... INTO常に新しいテーブルを作成したいので、INSERT ... SELECT代わりに次を使用します。

CREATE TRIGGER [config].[UpdateSystemSettings]

ON [config].[SystemSetting] AFTER UPDATE AS BEGIN
SET NOCOUNT ON;

insert into [history].[config_SystemSettings] (settingId,campId,settingKey,settingValue)
SELECT old.settingId, old.campId, old.settingKey, old.settingValue
FROM [config].[SystemSetting] AS old
INNER JOIN deleted AS del ON del.settingId = old.settingId

ただし、最初に明示的に作成する必要があります[history].[config_SystemSettings]

于 2012-04-13T09:05:33.670 に答える