📄 set_constraints.sgml
字号:
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_constraints.sgml,v 1.9 2003/09/22 00:16:58 petere Exp $ --><refentry id="SQL-SET-CONSTRAINTS"> <refmeta> <refentrytitle id="SQL-SET-CONSTRAINTS-title">SET CONSTRAINTS</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv> <refname>SET CONSTRAINTS</refname> <refpurpose>set the constraint mode of the current transaction</refpurpose> </refnamediv> <indexterm zone="sql-set-constraints"> <primary>SET CONSTRAINTS</primary> </indexterm> <refsynopsisdiv><synopsis>SET CONSTRAINTS { ALL | <replaceable class="parameter">name</replaceable> [, ...] } { DEFERRED | IMMEDIATE }</synopsis> </refsynopsisdiv> <refsect1> <title>Description</title> <para> <command>SET CONSTRAINTS</command> sets the behavior of constraint evaluation in the current transaction. In <literal>IMMEDIATE</literal> mode, constraints are checked at the end of each statement. In <literal>DEFERRED</literal> mode, constraints are not checked until transaction commit. </para> <para> When you change the mode of a constraint to be <literal>IMMEDIATE</literal>, the new constraint mode takes effect retroactively: any outstanding data modifications that would have been checked at the end of the transaction (when using <literal>DEFERRED</literal>) are instead checked during the execution of the <command>SET CONSTRAINTS</command> command. </para> <para> Upon creation, a constraint is always give one of three characteristics: <literal>INITIALLY DEFERRED</literal>, <literal>INITIALLY IMMEDIATE DEFERRABLE</literal>, or <literal>INITIALLY IMMEDIATE NOT DEFERRABLE</literal>. The third class is not affected by the <command>SET CONSTRAINTS</command> command. </para> <para> Currently, only foreign key constraints are affected by this setting. Check and unique constraints are always effectively initially immediate not deferrable. </para> </refsect1> <refsect1> <title>Notes</title> <para> This command only alters the behavior of constraints within the current transaction. Thus, if you execute this command outside of a transaction block (<command>BEGIN</command>/<command>COMMIT</command> pair), it will not appear to have any effect. If you wish to change the behavior of a constraint without needing to issue a <command>SET CONSTRAINTS</command> command in every transaction, specify <literal>INITIALLY DEFERRED</literal> or <literal>INITIALLY IMMEDIATE</literal> when you create the constraint. </para> </refsect1> <refsect1> <title>Compatibility</title> <para> This command complies with the behavior defined in the SQL standard, except for the limitation that, in <productname>PostgreSQL</productname>, it only applies to foreign-key constraints. </para> </refsect1></refentry><!-- Keep this comment at the end of the fileLocal variables:mode:sgmlsgml-omittag:nilsgml-shorttag:tsgml-minimize-attributes:nilsgml-always-quote-attributes:tsgml-indent-step:1sgml-indent-data:tsgml-parent-document:nilsgml-default-dtd-file:"../reference.ced"sgml-exposed-tags:nilsgml-local-catalogs:("/usr/lib/sgml/catalog")sgml-local-ecat-files:nilEnd:-->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -