SQL Server にはトリガーの後と代わりにしかないことがわかりました。また、挿入された疑似テーブルの値を変更することは違法です。次に、私の問題が発生します。テーブルに挿入されるデータを確認したい場合、データが制約に違反している場合、これらの値をデフォルト値に変更する必要があります。どうすればよいですか? 挿入後に値を更新するのはどうですか?ただし、テーブルに一意の主キーまたは列がない場合、挿入したばかりの行を見つけて更新するにはどうすればよいですか?
15068 次
1 に答える
11
基本的に、INSTEAD OF INSERT
トリガーを使用すると、探しているものを実現できます-INSERTED
疑似テーブルからデータを読み取り、変更して、テーブルに挿入するだけです
したがって、トリガーは次のようになります。
CREATE TRIGGER YourTrigger ON dbo.YourTable
INSTEAD OF INSERT
AS
SET NOCOUNT ON
-- do the INSERT based on the INSERTED pseudo table, modify data as needed
INSERT INTO dbo.YourTable(Col1, Col2, ....., ColN)
SELECT
Col1, 2 * Col2, ....., N * ColN
FROM
INSERTED
もちろん、特定の行を無視するなどWHERE
、文に句の形式でチェックを追加することもできますSELECT .... FROM INSERTED
。可能性は無限大です。
于 2012-05-12T09:45:19.233 に答える