插入更新和删除场景中触发器的完整示例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入更新和删除场景中触发器的完整示例相关的知识,希望对你有一定的参考价值。
2> SELECT * FROM employee 3> GO ID name salary start_date city region ----------- ---------- ----------- ----------------------- ---------- ------ 1 Jason 40420 1994-02-01 00:00:00.000 NEW York W 2 Robert 14420 1995-01-02 00:00:00.000 Vancouver N 3 Celia 24020 1996-12-03 00:00:00.000 Toronto W 4 Linda 40620 1997-11-04 00:00:00.000 NEW York N 5 David 80026 1998-10-05 00:00:00.000 Vancouver W 6 James 70060 1999-09-06 00:00:00.000 Toronto N 7 Alison 90620 2000-08-07 00:00:00.000 NEW York W 8 Chris 26020 2001-07-08 00:00:00.000 Vancouver N 9 Mary 60020 2002-06-09 00:00:00.000 Toronto W (9 ROWS affected) 1> 2> CREATE TABLE myArchive ( 3> AID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, 4> TYPE nvarchar(6) NOT NULL, 5> whenchanged smalldatetime NOT NULL DEFAULT Getdate(), 6> ID INT, 7> newName nvarchar(30), 8> oldName nvarchar(50) 9> ) 10> GO 1> 2> 3> CREATE TRIGGER myTriggerINSERT 4> ON Employee 5> FOR INSERT 6> AS 7> DECLARE @ID INT, @Name nvarchar(30) 8> 9> SET @ID = (SELECT ID FROM inserted) 10> SET @Name = (SELECT Name FROM inserted) 11> 12> INSERT myArchive (TYPE, ID, newName) VALUES('INSERT', @ID, @Name) 13> GO 1> 2> 3> CREATE TRIGGER myTriggerDELETE 4> ON Employee 5> FOR DELETE 6> AS 7> DECLARE @ID INT, @Name nvarchar(30) 8> 9> SET @ID = (SELECT ID FROM deleted) 10> SET @Name = (SELECT Name FROM deleted) 11> 12> INSERT myArchive (TYPE, ID, oldName ) VALUES('DELETE', @ID, @Name) 13> GO 1> 2> CREATE TRIGGER myTriggerUPDATE 3> ON Employee 4> INSTEAD OF UPDATE 5> AS 6> 7> DECLARE @ID INT, @newName nvarchar(30), @oldName nvarchar(30) 8> 9> IF (SELECT ID FROM inserted) <> (SELECT ID FROM deleted) 10> RAISERROR ('You are not allowed to change ID.', 10,1) 11> ELSE 12> BEGIN 13> 14> --set local variables 15> SET @ID = (SELECT ID FROM inserted) 16> SET @newName = (SELECT Name FROM inserted) 17> SET @oldName = (SELECT Name FROM deleted) 18> 19> --write to table 20> UPDATE Employee SET Name = @newName WHERE ID = @ID 21> -- write to archive 22> INSERT myArchive (TYPE, ID, newName, oldName) VALUES('UPDATE', @ID, @newName, @oldName) 23> END 24> GO 1> 2> INSERT Employee (id, name) VALUES (13, 'Rickie') 3> GO (1 ROWS affected) 1> 2> SELECT * FROM myArchive 3> GO AID TYPE whenchanged ID newName oldName ----------- ------ -------------------- ----------- ------------------------------ ------------------ 1 INSERT 2006-10-10 20:21:00 13 Rickie NULL (1 ROWS affected) 1> 2> UPDATE Employee 3> SET Name = 'Rick' 4> WHERE ID = 3 5> GO (1 ROWS affected) (1 ROWS affected) 1> 2> SELECT * FROM myArchive 3> GO AID TYPE whenchanged ID newName oldName ----------- ------ -------------------- ----------- ------------------------------ ------------------ 1 INSERT 2006-10-10 20:21:00 13 Rickie NULL 2 UPDATE 2006-10-10 20:21:00 3 Rick Celia
以上是关于插入更新和删除场景中触发器的完整示例的主要内容,如果未能解决你的问题,请参考以下文章
PHPWord使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)
PHPWord使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)