SQL Serverのトリガーでinsert時に作成日時、update時に更新日時をセットする
件名の通り、トリガーによって、作成日時、更新日時を自動セットしたいです。
insertトリガーで作成日時をセットした場合、トリガー内のupdateによってupdateトリガーも実行されてしまい、更新日時も自動的にセットされます。
希望する動きとしては、insert時には更新日時をセットしたくありません。
Bingチャットでも聞いてみましたが、結局ダメでした。
sql
1CREATE TABLE YourTable 2( 3 ID INT IDENTITY(1,1) PRIMARY KEY, 4 SomeData NVARCHAR(100), 5 createDateTime DATETIME NULL, 6 updateDateTime DATETIME NULL 7) 8 9CREATE TRIGGER trg_Insert_YourTable 10ON YourTable 11AFTER INSERT 12AS 13BEGIN 14 UPDATE YourTable 15 SET createDateTime = GETDATE() 16 FROM YourTable 17 INNER JOIN inserted ON YourTable.ID = inserted.ID 18END 19 20CREATE TRIGGER trg_Update_YourTable 21ON YourTable 22AFTER UPDATE 23AS 24BEGIN 25 UPDATE YourTable 26 SET updateDateTime = GETDATE() 27 FROM YourTable 28 INNER JOIN inserted ON YourTable.ID = inserted.ID 29 WHERE YourTable.createDateTime IS NOT NULL 30END
この状態で
SQL
1insert into YourTable (SomeData) values ('test')
を実行すると、CreateDateTime, UpdateDateTimeの両方に日付がセットされます。
updateトリガー時にinsertトリガーが動いた結果であることが判別できれば良いと思うのですが、現在の記述では正しく機能していません。
仕組み上実現は可能でしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/10/06 06:16