`

CREATE TRIGGER 语句

SQL 
阅读更多
说明 

此语句用于在数据库中创建新触发器。它是一种形式的触发器,专门设计用于 SQL Remote。

语法 

CREATE TRIGGER trigger-name trigger-time
trigger-event, ...
ORDER integer ] ON table-name
REFERENCING [ OLD AS old-name ]
   [ NEW AS new-name ] ]
   [ REMOTE AS remote-name ] ]
FOR EACH { ROW | STATEMENT } ]
WHEN ( search-condition ) ]
IF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ... ]
   compound-statement
ELSEIF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ...
    compound-statement
END IF ] ]

trigger-time:
BEFORE | AFTER | RESOLVE

trigger-event:
DELETE | INSERT | UPDATE
UPDATE OF column-name [, column-name, ...]

参数 

trigger-time    可以定义行级触发器在插入、更新或删除之前 (BEFORE) 或之后 (AFTER) 执行。语句级触发器在语句后 (AFTER) 执行。RESOLVE 触发器时间用于 SQL Remote:它只在行级 UPDATE 或 UPDATE OF 列列表之前触发。

只要行中发生更新,BEFORE UPDATE 触发器就会触发,而不论新值是否与旧值不同。AFTER UPDATE 触发器只在新值与旧值不同时才触发。

触发器事件    触发器可以由以下一个或多个事件触发:

  • DELETE    每当删除关联表中的行时激活。

  • INSERT    每当有新行插入到与触发器关联的表中时激活。

  • UPDATE    每当更新关联表中的行时激活。

  • UPDATE OF column-list    每当更新关联表中的行和修改 column-list 中的列时激活。

用法 

任何地方。

权限 

必须有 RESOURCE 权限和表的 ALTER 权限,或者必须有 DBA 权限。CREATE TRIGGER 在表上放置表锁,因此要求独占使用表。

副作用 

自动提交。

另请参见 
说明 

CREATE TRIGGER 语句创建与数据库中的表关联的触发器,并且在数据库中存储触发器。

BEFORE UPDATE 触发器在行上发生更新的任何时候触发,不论新值是否不同于旧值。AFTER UPDATE 触发器仅当新值不同于旧值时才触发。

行级和语句级触发器 

触发器声明为行级触发器(此情况下,它在每行修改之前或之后执行)或语句级触发器(此情况下,它在整个触发器语句完成后执行)。

可以定义行级触发器在插入、更新或删除之前 (BEFORE) 或之后 (AFTER) 执行。语句级触发器在语句后 (AFTER) 执行。RESOLVE 触发器事件用于 SQL Remote:它仅在行级 UPDATE 或 UPDATE OF column-lists 之前触发。

要将触发器声明为行级触发器,请使用 FOR EACH ROW 子句。要将触发器声明为语句级触发器,可以使用 FOR EACH STATEMENT 子句或忽略 FOR EACH 子句。为清楚起见,建议在声明语句级触发器时输入 FOR EACH STATEMENT 子句。

触发顺序 

同时触发(之前、之后或解析)的同类型触发器可以使用 ORDER 子句确定触发器的触发顺序。

引用已删除和插入的值 

REFERENCING OLD 和 REFERENCING NEW 子句允许引用已删除和插入的行。在此子句中,UPDATE 处理为删除后插入。

REFERENCING REMOTE 子句用于 SQL Remote。它允许引用 UPDATE 语句的 VERIFY 子句中的值。它仅能用于 RESOLVE UPDATE 或 RESOLVE UPDATE OF column-list 触发器。

REFERENCING OLD 和 REFERENCING NEW 的含义不同,具体取决于触发器是行级还是语句级触发器。对于行级触发器,REFERENCING OLD 子句允许引用更新或删除之前行中的值,REFERENCING NEW 子句允许引用已插入或更新的值。在 BEFORE 和 AFTER 触发器中可以引用 OLD 和 NEW 行。REFERENCING NEW 子句允许在插入或更新操作发生之前在 BEFORE 触发器中修改新行。

对于语句级触发器,REFERENCING OLD 和 REFERENCING NEW 子句引用保存行的新旧值的声明过的临时表。这些表的缺省名称是 deletedinserted

WHEN 子句使触发器仅对搜索条件计算为真值的行触发。

用同一值更新值 

只要行中发生更新,BEFORE UPDATE 触发器就会触发,而不论新值是否与旧值不同。AFTER UPDATE 触发器只在新值与旧值不同时才触发。

示例 
  • 当任命一个新的部门经理时,更新该部门中雇员的 manager_id 列。

    CREATE TRIGGER
    tr_manager BEFORE UPDATE OF dept_head_id ON department
    REFERENCING OLD AS old_dept
    NEW AS new_dept
    FOR EACH ROW
    BEGIN
       UPDATE employee
       SET employee.manager_id=new_dept.dept_head_id
       WHERE employee.dept_id=old_dept.dept_id
    END
分享到:
评论

相关推荐

    mysql触发器之创建使用触发器简单示例

    我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END; 然后我们来详细看下上述...

    SQLserver常用语句大全

    * CREATE TRIGGER 语句:创建一个触发器 * DROP TRIGGER 语句:从数据库中删除触发器 * CREATE SCHEMA 语句:向数据库添加一个新模式 * DROP SCHEMA 语句:从数据库中删除一个模式 * CREATE DOMAIN 语句:创建一个...

    SQLITE sql语句使用总结

    SQLite SQL 语句使用...在本文中,我们介绍了 SQLite 的基本概念和结构定义,包括 CREATE TABLE、CREATE VIEW 和 CREATE TRIGGER 语句的使用。掌握这些命令可以帮助您更好地使用 SQLite,提高数据库设计和开发效率。

    学习SQL语句之SQL语句大全.pdf

    * CREATE TRIGGER 语句:创建一个触发器。 * DROP TRIGGER 语句:从数据库中删除触发器。 * CREATE SCHEMA 语句:向数据库添加一个新模式。 * DROP SCHEMA 语句:从数据库中删除一个模式。 * CREATE DOMAIN 语句:...

    图书销售管理系统数据库SQL应用编程实验报告.pdf

    * 编写触发器:使用CREATE FUNCTION语句创建触发器函数,例如fun_name函数,CREATE TRIGGER语句创建触发器,例如触发器名 BEFORE | AFTER 触发事件 ON 表名 FOR EACH ROW EXECUTE PROCEDURE 触发器函数。 二、实验...

    SQL2005入门到精通(13)

    276 13.3 创建触发器 276 13.3.1 在SQL Server Management Studio中创建触发器步骤 276 13.3.2 使用CREATE TRIGGER语句创建触发器 277 13.4 修改触发器 280 13.4.1 在SQL Server Management Studio中...

    SQL语句大全:珍藏版

    - CREATE TRIGGER语句:用于创建触发器,触发器是一种特殊类型的存储过程,它会在满足特定条件时自动执行。 - DROP TRIGGER语句:用于删除已存在的触发器。 - CREATE SCHEMA语句:用于向数据库中添加新的模式,模式...

    实验六-触发器实验报告.doc

    在Oracle中创建触发器,使用CREATE TRIGGER语句,可以指定触发器的名字、触发时间(BEFORE或AFTER)、触发事件以及作用的表。例如,`CREATE TRIGGER trigger_name AFTER UPDATE OF column_name ON table_name FOR ...

    SQL查询语句

    - CREATE TRIGGER语句用于创建一个触发器。 - DROP TRIGGER语句用于从数据库中删除触发器。 - CREATE SCHEMA语句用于向数据库添加一个新模式。 - DROP SCHEMA语句用于从数据库中删除一个模式。 - CREATE DOMAIN和...

    Oracle和MySQL语句区别.doc

    例如,在Oracle中,可以使用CREATE TRIGGER语句来创建触发器,而在MySQL中,则使用CREATE TRIGGER或ALTER TABLE语句。 存储过程 存储过程是数据库中的一种预编译的代码,它可以在数据库中执行某些操作。Oracle和...

    常用SQL语句大全(简单实用)

    `CREATE TRIGGER` 语句用于创建触发器,触发器是一种特殊的存储过程,当特定事件(如数据的插入、更新或删除)发生时自动执行。其基本语法如下: ```sql CREATE TRIGGER trigger_name ON table_name AFTER|BEFORE {...

    SQL数据库语句大全完全整理版.doc

    * CREATE TRIGGER 语句:创立一个触发器,定义触发器的名称、表名和执行体。 * DROP TRIGGER 语句:从数据库中删除触发器,删除触发器的定义。 七、模式和域 模式和域是 SQL 语句中定义数据库结构和数据值域的机制...

    oracle PL/SQL语句

    * 创建触发器需要使用CREATE TRIGGER语句,并指定触发器的名称、表名、事件类型和执行体。 * 触发器可以用于实现数据的一致性和安全性。 例如,以下是创建触发器tr_InsertEmployee的PL/SQL语句: ```sql CREATE OR ...

    SQLite触发器的SQL语法.pdf

    CREATE TRIGGER 语句用于向数据库 schema 中添加触发器。语法如下: CREATE TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [ database-name . ] table-name trigger-action 其中,trigger-name 是...

    Create-trigger.zip_sql create trigger_sql 触发_trigger

    在SQL(Structured Query Language)中,触发器(Trigger)是一种数据库对象,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句或存储过程。触发器可以用来实现复杂的业务规则,确保...

    SQL92标准.txt

    ### CREATE TRIGGER语句 `CREATE TRIGGER`语句用于创建触发器,这是在特定事件发生时自动执行的一段SQL代码。触发器通常用于维护数据的完整性,如在更新某列时自动更新另一列。 ### DROP TRIGGER语句 `DROP ...

    常用SQL 语句大全

    **功能**: `CREATE TRIGGER` 语句用于创建触发器,触发器是一种特殊类型的存储过程,它定义了当特定事件(如数据更改)发生时要执行的操作。 **示例**: ```sql CREATE TRIGGER trigger_name AFTER INSERT ON table_...

    数据库基础试题答案数据库基础试题答案

    * CREATE TRIGGER语句:基本语法、参数 * 触发器的应用场景和优化方法 存储过程 * 存储过程的定义、类型、优缺点 * CREATE PROCEDURE语句:基本语法、参数 * 存储过程的应用场景和优化方法 函数 * 函数的定义、...

    SQL语句大全 集中了常用的操作

    #### CREATETRIGGER语句 `CREATE TRIGGER`用于在特定事件(如插入、更新或删除)发生时自动执行的SQL代码。 #### DROPTRIGGER语句 `DROP TRIGGER`用于删除触发器。 ### 权限管理 #### GRANT语句 `GRANT`用于授予...

Global site tag (gtag.js) - Google Analytics