Man page - set_constraints(7)

Manual

SET CONSTRAINTS

NAME
SYNOPSIS
DESCRIPTION 描 述
NOTES 注 意
COMPATIBILITY 兼 容 性
译 者


NAME

SET CONSTRAINTS - 设 置 当 前 事 务 的 约 束 模 式

SYNOPSIS

SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }

DESCRIPTION 描 述

SET CONSTRAINTS 设 置 当 前 事 务 里 的 约 束 运 算 的 特 性 。 在 IMMEDIATE 模 式 下 , 约 束 是 在 每 条 语 句 后 面 进 行 检 查 的 。 在 DEFERRED 模 式 下 , 一 直 到 事 务 提 交 时 才 检 查 约 束 。

在 你 把 约 束 的 模 式 修 改 成 IMMEDIATE 之 后 , 新 的 约 束 模 式 是 反 作 用 式 地 生 效 的 : 任 何 尚 在 等 待 的 , 需 要 在 事 务 结 束 检 查 地 数 据 修 改 的 约 束 ( 在 使 用 DEFERRED 的 时 候 ) 都 将 在 执 行 SET CONSTRAINTS 命 令 的 时 候 马 上 检 查 。

从 创 建 的 时 候 开 始 , 一 个 约 束 总 是 表 现 为 下 面 三 个 特 性 之 一 : INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE, 或 INITIALLY IMMEDIATE NOT DEFERRABLE。 第 三 个 特 性 不 会 受 SET CONSTRAINTS影 响 。

目 前 , 只 有 外 键 约 束 被 这 个 设 置 影 响 。 检 查 和 唯 一 约 束 总 是 立 即 检 查 的 而 不 是 可 推 迟 的 。

NOTES 注 意

这 个 命 令 只 在 当 前 事 务 里 修 改 约 束 的 行 为 。 因 此 , 如 果 你 在 事 务 块 外 面 ( BEGIN/COMMIT 对 ) 执 行 这 个 命 令 , 它 将 显 得 没 有 任 何 作 用 那 样 。 如 果 你 希 望 不 在 每 个 事 务 中 发 出 SET CONSTRAINTS 也 能 修 改 约 束 的 行 为 , 那 么 在 创 建 这 些 约 束 的 时 候 声 明 INITIALLY DEFERRED 或 者 INITIALLY IMMEDIATE。

COMPATIBILITY 兼 容 性

这 条 命 令 与 SQL 标 准 里 定 义 的 行 为 兼 容 , 只 不 过 , 在 PostgreSQL 里 , 它 只 适 用 于 外 键 约 束 。

译 者

Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh