質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

3244閲覧

SQLサーバーのトリガーによる作成日、更新日の記録(複数行同時insert)

YuichiroInoue

総合スコア1

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/11/05 00:42

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にてテストプロジェクトを作成し、デバッグを試みているのですが、ストアドプロシージャなどのデバッグについては情報が豊富にありますが、トリガーについては情報が見つけられずデバッグもできていないので、デバッグ方法についてもご教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

insert後のトリガーのほかにupdate後に更新日時を記録するトリガーを作成していたのですが、insert時にトリガーにより作成日がupdateされ、update後のトリガーが発動していました。

このupdate後のトリガー内の副問い合わせに問題があったため上記のエラーが出力されており、質問中のinsert時のトリガーには問題はありませんでした。

投稿2021/11/05 01:40

YuichiroInoue

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問