○ トリガー
■ AFTERトリガー
DELETE INSERT UPDATEが行われる直前に一回のみ実行されます
▽ dbo.table3のレコードの削除を行うと文字列hogeが出力されます。
CREATE TRIGGER dbo.test ON dbo.table3 AFTER DELETE
AS
BEGIN
SELECT 'hoge'
END
▽ トリガーの削除
drop trigger dbo.test
▽ 削除される行が出力される。
CREATE TRIGGER dbo.test ON dbo.table3 AFTER DELETE
AS
BEGIN
SELECT * from deleted
END
▽ 挿入される行が出力される
CREATE TRIGGER dbo.test ON dbo.table3 AFTER INSERT
AS
BEGIN
SELECT * from inserted
END
▽ 更新される行が出力される
CREATE TRIGGER dbo.test ON dbo.table3 AFTER UPDATE
AS
BEGIN
--削除される項目
SELECT * from deleted
--追加される項目
SELECT * from inserted
END
■ INSTEAD OFトリガー
DELETE INSERT UPDATEの処理事態が入れ替えられます。
▽ DELETEが実行されると対象レコードが出力されます。
処理が入れ替わるため、レコードは削除されません。
CREATE TRIGGER dbo.test ON dbo.table3 INSTEAD OF DELETE
AS
BEGIN
SELECT * from deleted
END
▽ INSERTが実行されると対象レコードが出力されます。
CREATE TRIGGER dbo.test ON dbo.table3 INSTEAD OF INSERT
AS
BEGIN
SELECT * from inserted
END
▽ UPDATEが実行されると対象レコードが出力されます。
CREATE TRIGGER dbo.test ON dbo.table3 INSTEAD OF UPDATE
AS
BEGIN
--削除される項目
SELECT * from deleted
--追加される項目
SELECT * from inserted
END
▽ INSERTが実行された後に、関数内でINSERTを行います
無限ループにはなりません
CREATE TRIGGER dbo.test ON dbo.table3 INSTEAD OF INSERT
AS
BEGIN
INSERT INTO dbo.table3([int]) SELECT [int] FROM inserted
END