前提・実現したいこと
SQL Server でトリガーを登録したいです。
トリガーでやりたいことは以下の通りです。
あるテーブルAにトリガーを設定し、テーブルAにレコードを挿入されると、テーブルBのkey1にテーブルAのkey2の値で更新したい。
トリガーの登録できるのですが、テーブルAにレコードを追加すると以下のエラーメッセージが表示されます。
アドバイスをいただけると助かります。
発生している問題・エラーメッセージ
DML ステートメントに INTO 句が指定されていない OUTPUT 句が含まれている場合、このステートメントの対象のテーブル 'テーブルA' に有効なトリガーを指定することはできません。
該当のソースコード
SQL
1CREATE TRIGGER [トリガー名] ON [テーブルA] 2AFTER INSERT 3AS 4BEGIN 5 update [テーブルB] 6 set [テーブルB].key1 = [テーブルA].key2 7 from [テーブルA] 8 where [テーブルB].key3 = [テーブルA].key3 and 9 [テーブルB].key4 = [テーブルA].key4 and 10 [テーブルA].key5 = 0; 11END
補足情報(FW/ツールのバージョンなど)
SQL Server 2016
キーはinserted テーブルを使用してますか?
省略せず、SQLの全文にして下さい。
追記しました。
大変失礼しました。
WHEREが書いてないと困るのでは?
トリガー内ではない位置にWHEREがないUPDATEを実行すると全行がUPDATE対象になるのでおかしい結果になるのでは?
文法としては字下げは現状でもエラーになりませんが、他のメンバーに嫌われるのは必然ですから、
今回の質問のBEGINは1カラム目に移動し、BEGINとENDの間は4カラム字下げして見易くしてください。
質問にテーブルAとテーブルBのCREATE TABLE文、現在テーブルAとテーブルBに入っているデータを何件かINSERTで文、
トリガー完成後実行するテーブルAへのINSERT文を1行、
トリガー実行後のテーブルBの更新後のSELECT結果を
https://teratail.com/help/question-tips#questionTips3-7 の [コード] で追記してください。
回答1件
あなたの回答
tips
プレビュー