我用“DROP TABLE ss CASCADE”删除表是怎么会提示语法错误的,求解。我用的是sql 2005,同样的 RESTRICT也错
- LocCloud
-
你这是要级联删除?
你的用法是不正确的。你先了解一下cascade的用法。
级联删除
外键的级联删除:如果父表中的记录被删除,则子表中对应的记录自动被删除
父表——被外键引用的表
子表——引用父表中的键作为外键的表
解释:
父表中删除包含主键值的行的操作,该值由子表的现有行中的外键列引用。在级联删除中,删除父表中的记录时,同时删除子表中外键引用此主健的记录。
例:
employee 表中有员工的dept_id 引用department表中dept_id( 同时为deptartment主键 )作为外键,当department表(父表)中一个部门被删除,employee表(子表)中引用这个部门的dept_id作为dept_id的记录也自动被删除。
语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
例子:
SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
create table a(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ("11","aaa")
insert a values("23","aaa")
insert b values("da","11")
insert b values("das","11")
insert b values("ww","23")
删除A表内id为‘11"的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id="11"
- tt白
-
题主大概是想要用cascade 来删除数据库吧
当数据库中含有数据表的时候,无法直接删除,必须要先将数据库下的表删除后才行
另一个可行的方法是使用关键字CASCADE 如下:
DROP DATABASE ss CASCADE;
- 可可
-
CASECADE 是级联的意思
不是直接对表用,是对表的主键或是外键使用
目的是保持表的引用完整性。
ALTER TABLE ss
DROP CONSTRAINT ss_fk CASCADE
这样就可以删除这个表的外键的级联了。
- 我不懂运营
-
这种好像只能删除关联视图
- clou
-
现在早已经不用cascade 来删除数据库或数据表了,任何情况下使用关键字cascade 都会出现“语法错误”
- 康康map
-
你这是要级联删除?
你的用法是不正确的。你先了解一下cascade的用法。
级联删除
外键的级联删除:如果父表中的记录被删除,则子表中对应的记录自动被删除
父表——被外键引用的表
子表——引用父表中的键作为外键的表
解释:
父表中删除包含主键值的行的操作,该值由子表的现有行中的外键列引用。在级联删除中,删除父表中的记录时,同时删除子表中外键引用此主健的记录。
例:
employee 表中有员工的dept_id 引用department表中dept_id( 同时为deptartment主键 )作为外键,当department表(父表)中一个部门被删除,employee表(子表)中引用这个部门的dept_id作为dept_id的记录也自动被删除。
语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
例子:
SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
create table a(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ("11","aaa")
insert a values("23","aaa")
insert b values("da","11")
insert b values("das","11")
insert b values("ww","23")
删除A表内id为‘11"的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id="11"