SQLサーバーでUPDATEトリガーの代わりに、INSERTEDテーブルから値をキャッシュしなくてもすべてのフィールドを更新したいUPDATE Queryのフィールドに移動します。これをどのように行うことができますか?UPDATEトリガーの代わりにすべてのフィールドを動的に更新する方法SQL Server
CREATE TRIGGER trg_Instead_updTable1 ON dbo.Table1
INSTEAD OF UPDATE
AS
BEGIN
IF (UPDATE(ID))
RAISERROR ('It is not allowed to update a Table1.ID', 16, 1)
ELSE
BEGIN
UPDATE dbo.Table1
SET * = (SELECT * FROM INSERTED JOIN DELETED ON INSERTED.ID = DELETED.ID)
END
END
ここでは正確に何をしていますか? 'INSTEAD OF UPDATE'トリガは通常、通常の更新ロジックを完全にバイパスし、何か完全なカスタムを行う場合にのみ使用されます。実際にはここで通常の更新ロジックが必要なようです。 – mroach
サイドノート:重大度16の 'raiserror'は更新が行われないようにしません。更新を実際にキャンセルするには、 'rollback transaction'を追加する必要があります。 – mroach
@mroach私はIDの更新を拒否し、他のアップデートを受け入れたいと思っています。これらのコードでは表示されませんが、私は通常のアップデート値にアクセスしようとしていました。何らかの理由であいまいだった –