挿入後トリガーを使用します。 inserted
から参加する Tb
への疑似テーブル 主キーに。次に、descの値を更新します。次のようなもの:(ただし、コンパイルされない場合があります)
CREATE TRIGGER TbFixTb_Trg
ON Tb
AFTER INSERT
AS
BEGIN
UPDATE Tb
SET DESC = SomeTransformationOf(i.DESC)
FROM Tb
INNER JOIN inserted i on i.Id = Tb.Id
END
GO
このトリガーは、挿入が行われた後、insert
の前に発生します ステートメントが完了します。したがって、新しい誤った値はすでにターゲットテーブルに配置されています。このトリガーは、列の追加、削除などの際に変更する必要はありません。
警告 整合性制約は、アフタートリガーが起動する前に適用されます。したがって、DESCの適切な形式を適用するためのチェック制約を設定することはできません。これは、トリガーが何かを修正する前にステートメントが失敗する原因になるためです。 (この段落を信頼する前に再確認してください。トリガーを作成してからしばらく経ちました。)