关于CASCADE CONSTRAINTS的问题

beingyourself1 2009-03-01 01:10:00
我在网上看到好多的数据库的脚本,比如
DROP TABLE bookcat CASCADE CONSTRAINTS;
CREATE TABLE bookcat(
id NUMBER PRIMARY KEY,
catname VARCHAR2 (40) NOT NULL
);
我知道这一步是为了建立一个名为bookcat的表,可是第一步为什么要加一个DROP TABLE bookcat CASCADE CONSTRAINTS;这句是什么意思,是说每一次建立一个表都必须加这样的一个sql语句吗?新手请教,谢谢
...全文
960 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
百年树人 2009-03-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 beingyourself1 的回复:]
可是为什么要先删除他的约束呢,我看到过
DROP TABLE bookcat;
CREATE TABLE bookcat(
id NUMBER PRIMARY KEY,
catname VARCHAR2 (40) NOT NULL
);
这么没有删除约束那为什么要先删除一个表呢?
[/Quote]

如果库中已存在一个跟现在正要创建的表名相同的表,那么就无法创建,
如上面的bookcat,如果库中已存在bookcat表,如果没有drop那一段,执行下面的脚本就会报错

如果要删除的表的关键字是另一个表中的外键,另一个表有数据时,如果不删除外键约束就会无法删除。
ACMAIN_CHM 2009-03-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 beingyourself1 的回复:]
可是为什么要先删除他的约束呢,我看到过
DROP TABLE bookcat;
CREATE TABLE bookcat(
id NUMBER PRIMARY KEY,
catname VARCHAR2 (40) NOT NULL
);
这么没有删除约束那为什么要先删除一个表呢?
[/Quote]

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

beingyourself1 2009-03-01
  • 打赏
  • 举报
回复
可是为什么要先删除他的约束呢,我看到过
DROP TABLE bookcat;
CREATE TABLE bookcat(
id NUMBER PRIMARY KEY,
catname VARCHAR2 (40) NOT NULL
);
这么没有删除约束那为什么要先删除一个表呢?
百年树人 2009-03-01
  • 打赏
  • 举报
回复
删除bookcat表之前,先删除它的外键约束
iihero_ 2009-03-01
  • 打赏
  • 举报
回复
加上CASCADE CONSTRAINTS,意思是把这个表的诸多约束也一同删掉。(尤其是有外键约束的时候)
要是想少点麻烦,加上这个更有保障。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧