Alter table Add [Constraint] 语法中是否需要 "Constraint" 关键字?

Is "Constraint" keyword required in Alter table Add [Constraint] syntax?

我遇到了一个带有以下查询的示例

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)

如文档(下方link)所示,关键字 CONSTRAINT 是可选的: https://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#CJAEDFIB

但是,如果您想为约束命名,则需要它。

不需要 constraint <constraint_name> 子条款。

是的,我们可以使用:

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:

图片来自: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