Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
在数据库中创建新触发器,采用与 Adaptive Server Enterprise 兼容的方式。
CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name FOR { INSERT, UPDATE, DELETE } AS statement-list
CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name FOR {INSERT, UPDATE} AS [ IF UPDATE ( column-name ) [ { AND | OR } UPDATE ( column-name ) ] ... ] statement-list [ IF UPDATE ( column-name ) [ { AND | OR} UPDATE ( column-name ) ] ... ] statement-list
CREATE TRIGGER 获得对表的独占表锁定。
删除或插入的行保存在两个临时表中。在 Transact-SQL 形式的触发器中,可以使用表名 "deleted" 和 "inserted" 访问这些行,如同在 Adaptive Server Enterprise 中。在 Watcom SQL CREATE TRIGGER 语句中,使用 REFERENCING 子句引用这些行。
触发器名称在数据库中必须是唯一的。
Transact-SQL 触发器在执行触发语句后 (AFTER) 执行。
由于创建 Transact-SQL 触发器时不支持 ORDER 子句,所以 trigger_order 值设置为 1。SYSTRIGGER 系统表在以下几列上有唯一索引:table_id、event、trigger_time 和 trigger_order。对于特定事件(插入、更新、删除),语句级触发器始终为 AFTER,且不能设置 trigger_order,因此每个表每个类型只能有一个触发器,假定任何其它触发器的顺序只会设置为 1。请参见Transact-SQL 触发器概述。
DBA 特权、或 RESOURCE 特权和表的 ALTER 特权。
自动提交。
SQL/2008 服务商扩充。
Transact-SQL Adaptive Server Enterprise 不支持 ROW 触发器。虽然 Adaptive Server Enterprise 支持 Transact-SQL INSTEAD OF 触发器,但 SQL Anywhere 的 Transact-SQL 方言不支持 Transact-SQL INSTEAD OF 触发器。