触发器是用户定义在关系表
上的一类由事件驱动的存储过程,由服务器自动激活
触发器是一种特殊的存储过程,它的优点是不管因为什么原因造成的数据变化都能自动相应,对于每条 SQL 语句,触发器仅执行一次,事务可用于触发器中
触发器常用于保护数据完整性,在一定程序上实现安全性保护
# 事务定义
SQL1 2 3
| BEGIN TRANSACTION [ <transactionName> ] COMMIT TRANSACTION [ <transactionName> ] ROLLBACK TRANSACTION [ <transactionName> ]
|
有两个特殊的表用在触发器语句中(不同数据库其名称不一样,以
SQL Serverdeleted
表。在对基本表进行 DELETE 或 UPDATE 操作时,需将基本表中被删除或修改值存入 deleted
表中,再更新触发器作用的基本表inserted
表。在对基本表进行 INSERT 或 UPDATE 操作时,需将基本表中被插入或修改值存入 inserted
表中,再更新触发器作用的基本表
实际上,UPDATE 命令是删除后紧跟着插入,旧元组首先被复制到 deleted
表中,新元组再更新触发器作用的基本表的同时,被复制到 inserted
表中
# 触发器的创建
SQL1 2 3 4
| CREATE TRIGGER 触发器名 ON 表名 FOR <INSERT | UPDATE | DELETE> AS 一些操作
|
# 实例
SQL1 2 3 4 5 6 7 8 9
| CREATE TRIGGER sexIns ON Student FOR INSERT, UPDATE AS IF EXISTS( SELECT * FROM inserted WHERE sex NOT IN ('男', '女') ) ROLLBACK
|
# 触发器的删除和修改
# 删除
SQL1 2 3 4 5
| ALTER TRIGGER 触发器名 ON 表名 FOR <INSERT | UPDATE | DELETE> AS 内容
|
# 删除触发器
SQL