为什么在表创建期间不添加DB约束

时间:2010-03-19 10:02:21

标签: sql oracle

这些与表创建方式有何不同。

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

1 个答案:

答案 0 :(得分:4)

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

您可能想检查您的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