高级 SQL:触发器、例程与嵌入式 SQL 详解
1. 触发器(Triggers)
触发器是与表相关联的数据库对象,当特定事件发生时会自动执行。例如,与 Product_T
表关联的触发器,无论事件的来源(应用程序)是什么,只要对 Product_T
表中的 ProductStandardPrice
执行 UPDATE
命令,触发器都会被触发。这与例程(或存储过程)不同,例程只有在用户或程序明确调用时才会执行。
触发器可以在引发它的语句执行之前、之后或替代该语句执行。“instead of” 触发器与 “before” 触发器不同,它会替代预期的事务执行,如果 “instead of” 触发器触发,预期的事务将不会发生。DML 触发器可以在 INSERT
、 UPDATE
或 DELETE
命令上触发,并且可以在每行受影响时触发,也可以在每条语句执行时只触发一次,而不管受影响的行数。
-- 示例:防止意外修改或删除表的触发器
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK;
触发器在数据库管理中很有用,可用于规范数据库操作和执行审计功能。DDL