列の内容を同じテーブルの別の列にコピーしたいと考えています。したがって、このトリガーを作成しました。
ALTER TRIGGER [dbo].[kennscht_copy_to_prodverpt]
ON [dbo].[Stammdaten]
AFTER INSERT
AS
UPDATE Stammdaten
SET PRODVERPT = (SELECT KENNSCHT FROM INSERTED)
WHERE SNR = (SELECT SNR FROM INSERTED);
しかし、テーブルで UPDATE を使用KENNSCHT
して別の値に更新すると、PRODVERPT
更新されません。AFTER INSERT
これは、トリガーが onであり、 notであるためだと主張できますが、AFTER UPDATE
それを変更して and によってトリガーされるようにするUPDATE
とINSERT
、行を更新するたびに、SQL Server からエラー メッセージが表示されます。
行が一意でなくなるか、複数の行(2行)を更新するため、行を更新できません[sic]
ここで何が起こっているのですか?トリガーが何もしないか、テーブル全体を台無しにして更新不能にしています。
更新:次のトリガーも試しました:
UPDATE s
SET s.PRODVERPT = i.KENNSCHT
FROM Stammdaten s
INNER JOIN INSERTED i ON i.SNR = s.SNR;
しかし、それはまったく同じ動作をします。のみを使用するAFTER INSERT
と何も変化せず、使用するとAFTER INSERT, UPDATE
上記のエラーメッセージが表示されます。
更新 2: テーブルに複数の行はありません。問題に関連している可能性があると考えたため、既に確認しました。