2016-04-27 55 views
-1

我碰到一个例子就是用下面的查询在Alter表中添加[Constraint]语法是否需要“约束”关键字?

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) 
+1

应当**'REFERENCES' **不'REFERENCE' – lad2025

回答

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

0

constraint <constraint_name>子条款不是必需的。