我遇到了一个包含以下查询的示例
ALTER TABLE T ADD UNIQUE(col1)
通常我会写
ALTER TABLE T ADD CONSTRAINT UNIQUE(col1)
ALTER TABLE T ADD CONSTRAINT UQ_1 UNIQUE(col1)
用于未命名和命名的约束。
我的问题是关键字CONSTRAINT
是否必需?我找不到这方面的参考。我们可以写
ALTER TABLE T ADD FOREIGN KEY(col1) REFERENCE T1(col2)
ALTER TABLE T ADD PRIMARY KEY(col1)
答案 0 :(得分:3)
是的,我们可以使用:
ALTER TABLE T ADD FOREIGN KEY(col1) REFERENCES T1(col2);
ALTER TABLE T ADD PRIMARY KEY(col1);
的 LiveDemo
强>
或者如果你想给它们命名:
ALTER TABLE T ADD CONSTRAINT fk_T_T1 FOREIGN KEY(col1) REFERENCES T1(col2);
ALTER TABLE T ADD CONSTRAINT pk_T PRIMARY KEY(col1);
图片来自:http://docs.oracle.com/cd/B28359_01/server.111/b28286/img/constraint_clauses.gif
和
图片来自:http://docs.oracle.com/cd/B19306_01/server.102/b14200/img/out_of_line_constraint.gif
答案 1 :(得分:2)
如文档(下面的链接)所示,关键字CONSTRAINT是可选的: https://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#CJAEDFIB
但是,如果要为约束命名,则需要它。
答案 2 :(得分:0)
不需要constraint <constraint_name>
子条款。