选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

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

INSERTUPDATEDELETE之一;它指定将引发该触发器的事件。可以使用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 TRIGGERPostgreSQLSQL标准的一个扩展。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。