2010-03-19 47 views
1

这些与创建表的方式有何区别?在表创建过程中为什么不添加数据库约束

CREATE TABLE TABLENAME(
field1.... 
field2... 

add constraint constraint1; 
add constraint constraint2; 
) 

CREATE TABLE TABLENAME(
    field1.... 
    field2... 
    ) 

ALTER TABLE TABLENAME add constaint1 
ALTER TABLE TABLENAME add constaint2 

而且第一个脚本失败的SQL +,但他们传递的SQLDeveloper 谢谢! Pratik

+0

你错过了很多分号(;) – 2010-03-22 04:31:18

回答

4

区别似乎是第一个方法是单个语句,而第二个方法使用三个不同的语句。 如果的陈述成功,总体结果将是相同的。

你可能想,虽然检查synthax(尤其是使用“;”):

SQL> CREATE TABLE table1 (
    2  field1 NUMBER, 
    3  field2 NUMBER, 
    4  CONSTRAINT pk_table1 PRIMARY KEY (field1), 
    5  CONSTRAINT chk_table1 CHECK (field2 > 0) 
    6 );  
Table created 

SQL> CREATE TABLE table2 (
    2  field1 NUMBER, 
    3  field2 NUMBER);  
Table created 

SQL> ALTER TABLE table2 ADD CONSTRAINT pk_table2 PRIMARY KEY (field1);  
Table altered 

SQL> ALTER TABLE table2 ADD CONSTRAINT chk_table2 CHECK (field2 > 0);  
Table altered 
相关问题