↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0
历史版本。 PostgreSQL 9.0 已结束支持。 2015-10-08. 请参阅 当前版本手册.

CREATE CONSTRAINT TRIGGER

CREATE CONSTRAINT TRIGGER — 定义一个新的约束触发器

大纲

CREATE CONSTRAINT TRIGGER name
    AFTER event [ OR ... ]
    ON table_name
    [ FROM referenced_table_name ]
    { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
    FOR EACH ROW
    [ WHEN ( condition ) ]
    EXECUTE PROCEDURE function_name ( arguments )

描述

CREATE CONSTRAINT TRIGGER创建一个约束触发器。它与常规触发器相同,只是触发器引发的时机可以使用SET CONSTRAINTS来调整。约束触发器必须是AFTER ROW触发器。它们既可以在导致触发事件的那条语句结束时引发,也可以在包含它的事务结束时引发;在后一种情况下,称它们为被延迟的(deferred)。一个待处理的延迟触发器引发也可以通过使用SET CONSTRAINTS强制立即发生。

参数

name

约束触发器的名称。这也是使用SET CONSTRAINTS修改触发器行为时所用的名称。该名称不能带模式限定—触发器继承其表的模式。

event

INSERT、UPDATE或DELETE之一;它指定将引发该触发器的事件。可以使用OR指定多个事件。

table_name

触发事件发生的表(可能是模式限定的)的名称。

referenced_table_name

被该约束引用的另一张表(可能是模式限定的)的名称。这个选项用于外键约束,不推荐一般用途使用。

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

触发器的默认时机。这些约束选项的细节见CREATE TABLE的文档。

condition

一个决定触发器函数是否实际被执行的布尔表达式。它的作用与CREATE TRIGGER中相同。特别要注意,WHEN条件的求值不会被延迟,而是在行更新操作执行之后立即进行。如果条件的求值结果不为true,则该触发器不会被排入延迟执行的队列。

function_name

触发器引发时要调用的函数。详见CREATE TRIGGER。

arguments

传递给触发器函数的可选参数字符串。详见CREATE TRIGGER。

兼容性

CREATE CONSTRAINT TRIGGER是PostgreSQL对SQL标准的一个扩展。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.