openGauss SQL参考—SQL语法:CREATE TRIGGER

CREATE TRIGGER

功能描述

创建一个触发器。 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数。

注意事项

  • 当前仅支持在普通行存表上创建触发器,不支持在列存表、临时表、unlogged表等类型表上创建触发器。
  • 如果为同一事件定义了多个相同类型的触发器,则按触发器的名称字母顺序触发它们。
  • 触发器常用于多表间数据关联同步场景,对SQL执行性能影响较大,不建议在大数据量同步及对性能要求高的场景中使用。
  • 执行创建触发器操作的用户需要拥有指定表的TRIGGER权限或被授予了CREATE ANY TRIGGER权限。
  • 当使用WHEN ( condition )时,此处的括号不能省略,condition需要被括号括起。

语法格式

  • o风格创建触发器的语法
CREATE [ CONSTRAINT ] TRIGGER trigger_name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
    ON table_name
    [ FROM referenced_table_name ]
    { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
    [ FOR [ EACH ] { ROW | STATEMENT } ]
    [ WHEN ( condition ) ]
    EXECUTE PROCEDURE function_name ( arguments );
  • 兼容mysql兼容风格的创建触发器的语法
CREATE [ CONSTRAINT ] [ DEFINER=user ] TRIGGER [ IF NOT EXISTS ] trigger_name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
    ON table_name
    [ FROM referenced_table_name ]
    { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
    [ FOR [ EACH ] { ROW | STATEMENT } ]
    [ WHEN ( condition ) ]
    [ trigger_order ]
    trigger_body

其中event包含以下几种:

    INSERT
    UPDATE [ OF column_name [, ... ] ]
    DELETE
    TRUNCATE

其中trigger_order是:

    { FOLLOWS|PRECEDES } other_trigger_name
posted @ 2024-07-26 11:21  openGauss-bot  阅读(16)  评论(0)    收藏  举报