Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 外键的限制_Sql_Postgresql_Foreign Keys_Constraints - Fatal编程技术网

Sql 外键的限制

Sql 外键的限制,sql,postgresql,foreign-keys,constraints,Sql,Postgresql,Foreign Keys,Constraints,因此,除了命名外键外,创建约束外键而不是普通外键有什么真正的优势吗?使用以下语法添加外键: 并使用: 唯一的功能区别是,altertable表单允许您创建使用多个列的外键 当然,您可以使用alter table表单中的create table作为表约束,而不是列约束: create table T ( ... foreign key (c1, c2) references T2(c1, c2) ) 在所有情况下,参考底图外键都是相同的,唯一的区别在于定义它们的位置。不清楚您在问

因此,除了命名外键外,创建约束外键而不是普通外键有什么真正的优势吗?

使用以下语法添加外键:

并使用:

唯一的功能区别是,
altertable
表单允许您创建使用多个列的外键

当然,您可以使用
alter table
表单中的
create table
作为表约束,而不是列约束:

create table T (
    ...
    foreign key (c1, c2) references T2(c1, c2)
)

在所有情况下,参考底图外键都是相同的,唯一的区别在于定义它们的位置。

不清楚您在问什么。外键始终是一个约束。没有其他普通外键。您是否在询问使用
引用作为
创建表中的列约束与使用
更改表T添加约束添加FK之间的区别…
?@muistooshort是的,这就是我要问的,很抱歉我的英语不好。
[ CONSTRAINT constraint_name ]
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ]
create table T (
    ...
    foreign key (c1, c2) references T2(c1, c2)
)