○ トリガー


■ 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



▲トップページ > SQL 関連