触发器是特殊形式的存储过程,在执行修改数据的查询时自动执行。只要参照完整性和其它声明性约束不足够,就可以使用触发器。
有关参照完整性的详细信息,请参见确保数据完整性和 CREATE TABLE 语句。
您可以实现更详细的检查及更复杂的参照完整性;或者可以对新数据实施检查,但允许旧数据将违反约束。触发器的另一用途是记录与数据库表有关的活动,而与使用数据库的应用程序无关。
触发器执行权限触发器通过关联表的所有者的权限执行,而不是通过其操作导致触发器触发的用户 ID 的权限执行。触发器可以修改用户无法直接修改的表中各行。 |
可以对以下一种或多种触发事件定义触发器:
| 操作 | 说明 |
|---|---|
| INSERT | 只要有新行插入到与触发器关联的表中,就调用触发器。 |
| DELETE | 只要删除了关联表中的行,就调用触发器。 |
| UPDATE | 只要更新了关联表中的行,就调用触发器。 |
| UPDATE OF column-list | 只要更新了关联表中的行,且修改了 column-list中的列,就调用触发器。 |
您可以为需要处理的每个事件分别编写触发器,或者,如果您有一些共享操作以及一些取决于事件的操作,您可以为所有事件创建触发器并使用 IF 语句区分所发生的操作。
有关详细信息,请参见触发器操作条件。
触发器可以是行级别或语句级别:
行级别触发器为更改的每一行执行一次。行级别触发器在更改行之前或之后执行。
语句级别触发器在整个触发语句完成后执行。
对于在执行时依赖参照完整性操作(例如在操作正执行或未执行的级联更新或删除)的触发器,其执行时间灵活的特点十分有用。
如果在触发器执行时发生错误,则触发该触发器的操作将失败。INSERT、UPDATE 和 DELETE 是原子操作(请参见原子复合语句)。在这些操作失败时,该语句的所有结果(包括触发器的结果以及这些触发器调用的任何过程的结果)都恢复为其操作前状态。
有关触发器语法的完整说明,请参见 CREATE TRIGGER 语句。
创建触发器
执行触发器
变更触发器
删除触发器
触发器执行权限
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。