SQL 级联删除与级联更新的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 级联删除与级联更新的方法相关的知识,希望对你有一定的参考价值。

参考技术A 复制代码
代码如下:
on
delete
cascade
当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性
CREATE
TABLE
Countries(CountryId
INT
PRIMARY
KEY)
INSERT
INTO
Countries
(CountryId)
VALUES
(1)
INSERT
INTO
Countries
(CountryId)
VALUES
(2)
INSERT
INTO
Countries
(CountryId)
VALUES
(3)
CREATE
TABLE
Cities(
CityId
INT
PRIMARY
KEY
,CountryId
INT
REFERENCES
Countries
ON
DELETE
CASCADE);
INSERT
INTO
Cities
VALUES(1,1)
INSERT
INTO
Cities
VALUES(2,1)
INSERT
INTO
Cities
VALUES(3,2)
CREATE
TABLE
Buyers(CustomerId
INT
PRIMARY
KEY
,CityId
INT
REFERENCES
Cities
ON
DELETE
CASCADE);
INSERT
INTO
Buyers
VALUES(1,1),
INSERT
INTO
Buyers
VALUES(2,1)
INSERT
INTO
Buyers
VALUES(3,2)
此外还有级联更新
on
update
cascade

sql 级联删除问题

用sqlServer做数据库开发网站,如果想删除某一栏目,当然得删除该栏目下的所有子栏目及文章的相关信息.综合安全及执行性能及维护来讲,下面的几个方案中哪一种方案较好?
1.使用数据库的级联删除
2.写触器
3.用存储过程,然后面应用程序中调用
望有开发经验的大虾不吝赐教
如果我只想在关系中建级联更新和级联删除,这样做行吗?

如果目前的要求仅仅是简单的级联删除/更新的话,你用3种方法都可以。
今后如果需要在删除/更新主表记录的时候加入用触发器或者级联删除/更新无法实现的其他操作的话,还是在程序中删除比较好,这样程序的逻辑比较集中,便于维护。
参考技术A 都差不多。个人比较倾向于存储过程,感觉使用比其他的方便 参考技术B 触发器..

相对于只是单独的删除要好一些
参考技术C mark

以上是关于SQL 级联删除与级联更新的方法的主要内容,如果未能解决你的问题,请参考以下文章

sql 级联删除问题

sql级联更新和级联删除不起作用

sql中级联删除,级联更新是怎么理解的?

SQL 级联更新,级联删除的概念

如何理解access设置中的“级联更新”和“级联删除”?

sql中级联删除,级联更新是怎么理解的?