Alter表中是否需要“Constraint”关键字添加[Constraint]语法?

时间:2016-04-27 13:30:11

标签: oracle syntax oracle11g oracle10g constraints

我遇到了一个包含以下查询的示例

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)

3 个答案:

答案 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);

ALTER TABLE

enter image description here

图片来自:http://docs.oracle.com/cd/B28359_01/server.111/b28286/img/constraint_clauses.gif

enter image description here 图片来自: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>子条款。