SQLサーバーにて、データのinsertおよびupdateの日時を記録するため、トリガーを利用しようとしています。
insert時に、一件のレコードのinsertであれば期待通りの動きをするのですが、複数行同時にinsertすると
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. The statement has been terminated.
というエラーで失敗します。
おそらくトリガー内で挿入されたレコードのidに対応する行を特定するための副問い合わせ部分だと思うのですが、解決方法が分かりません。
トリガーの内容は以下になります。
SQL
1CREATE TRIGGER [dbo].[on_create] 2 ON [dbo].[tools] 3 AFTER INSERT 4AS 5BEGIN 6 -- SET NOCOUNT ON added to prevent extra result sets from 7 -- interfering with SELECT statements. 8 SET NOCOUNT ON; 9 10 -- Insert statements for trigger here 11 update tools 12 set created_at = getdate(),updated_at = getdate() 13 where id_tool in (select id_tool from inserted) 14END
SQLの挙動があまり理解できておらず、解説いただけると助かります。
また、Visual Studioにてテストプロジェクトを作成し、デバッグを試みているのですが、ストアドプロシージャなどのデバッグについては情報が豊富にありますが、トリガーについては情報が見つけられずデバッグもできていないので、デバッグ方法についてもご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。