SQL_数据库基础之级联删除和级联更新
来源:互联网 发布:unity3d 2d 编辑:程序博客网 时间:2024/05/01 18:56
原文:http://blog.sina.com.cn/s/blog_a49d9ef801013whu.html
级联删除
删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。
语法:
FOREIGN KEY(COLUMN[,...n])REFERENCES referenced_table_name[(ref_column[,...n])][ON DELETE cascade][ON UPDATE cascade]
注释:
column:列名
referenced_table_name:外键参考的主键表名称
ref_name:外键要参考的表的主键列
on delete:删除级联
on update:更新级联
SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
--建立类别表CREATE TABLE category( id INT IDENTITY(1,1) PRIMARY KEY, [name] VARCHAR(20) NOT NULL )--建立新闻表CREATE TABLE news( id INT IDENTITY(1,1) PRIMARY KEY, title VARCHAR(10) NOT NULL, [content] text NOT NULL, createTime datetime NOT NULL, caId INT NOT NULL FOREIGN KEY (caId) REFERENCES category(id) ON DELETE cascade )--建立评论表CREATE TABLE comment( id INT IDENTITY(1,1) PRIMARY KEY, [content] text NOT NULL, createTime datetime NOT NULL, userIp VARCHAR(15) NOT NULL, newsId INT NOT NULL FOREIGN KEY (userId) REFERENCES news(id) ON DELETE cascade
关系图如下:
一个新闻类别对应着0个或者多个新闻,一个新闻对应着0个或者多个评论。
在建立这三张表时,同时建立了news表到category的外主键约束和级联删除,以及comment表到news表的外主键约束和级联删除。
这样的话,只要删除category表中的记录,对应着其它表中的记录也会跟着删除。
通过触发器设置级联删除
例子同上。
在建立表的时候不设置级联删除,而是通过触发器实现。
在category表中建立instead of触发器,实现级联删除。
USE [NewsSystem]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER TRIGGER [dbo].[trigCategoryDelete]ON [dbo].[category] instead OF DELETEAS BEGIN DECLARE @caId INT SELECT @caId=id FROM deleted --删除评论 DELETE comments WHERE newsId IN (SELECT newsId FROM news WHERE caId=@caId) --删除新闻 DELETE news WHERE caId=@caId --删除类别 DELETE category WHERE id=@caIdEND
这样在执行对category表中记录进行删除的时候,触发器执行,就会删除对应表中的记录,实现级联删除。
级联更新与级联删除类似,不再赘述。
0 0
- SQL_数据库基础之级联删除和级联更新
- SQL数据库基础之级联删除和级联更新
- SQL Server数据库基础的级联删除、级联更新与三层架构之窥
- 级联删除和更新
- 级联删除和更新
- SQL级联更新和级联删除
- SQL级联更新和级联删除
- sql 添加级联删除和级联更新
- MySQL级联删除和更新
- Oracle级联更新和删除
- MySql级联删除和更新
- MySql级联删除和更新
- MySql级联删除和更新
- MySql级联删除和更新
- MySQL级联删除和更新
- MySql级联删除和更新
- 创建级联更新,级联删除
- mysql 级联更新 ,级联删除
- 生老病死相互扶持这事真特么不是闹着玩的。
- linux文件监控(网站拷贝英文仅转存浏览)
- 赵雅智_BroadcastReceiver
- matlab 点除与除的区别
- Android资源之图像资源(状态图像资源)
- SQL_数据库基础之级联删除和级联更新
- [Perl系列—] 2. Perl 中的引用用法
- java自学之路-----对于之前学习的总结以及接下来的计划
- 第105天
- 插入排序
- ovirt-engine搭建
- 使用Visual Studio 创建新的Web Part项目
- ovirt-engine详细安装
- ovirt-engine搭建问题总结