我在网上看到好多的数据库的脚本,比如
DROP TABLE bookcat CASCADE CONSTRAINTS;
CREATE TABLE bookcat(
id NUMBER       PRIMARY KEY,
catname VARCHAR2 (40)  NOT NULL
);
我知道这一步是为了建立一个名为bookcat的表,可是第一步为什么要加一个DROP TABLE bookcat CASCADE CONSTRAINTS;这句是什么意思,是说每一次建立一个表都必须加这样的一个sql语句吗?新手请教,谢谢

解决方案 »

  1.   

    加上CASCADE CONSTRAINTS,意思是把这个表的诸多约束也一同删掉。(尤其是有外键约束的时候)
    要是想少点麻烦,加上这个更有保障。
      

  2.   

    删除bookcat表之前,先删除它的外键约束
      

  3.   

    可是为什么要先删除他的约束呢,我看到过
    DROP TABLE bookcat; 
    CREATE TABLE bookcat( 
    id NUMBER      PRIMARY KEY, 
    catname VARCHAR2 (40) NOT NULL 
    ); 
    这么没有删除约束那为什么要先删除一个表呢?
      

  4.   


    你那个应该是什么工具自动生成的。为了确保没问题,所以加上 CASCADE CONSTRAINTS,这样即使你的表有什么主键被其它表做为外键也不会出错。
      

  5.   


    如果库中已存在一个跟现在正要创建的表名相同的表,那么就无法创建,
    如上面的bookcat,如果库中已存在bookcat表,如果没有drop那一段,执行下面的脚本就会报错如果要删除的表的关键字是另一个表中的外键,另一个表有数据时,如果不删除外键约束就会无法删除。