触发器实现级联修改数据库中的相关表
2012-07-26 21:09
246 查看
数据表关系图:
数据库中有三张表,新闻类别表(category),新闻表(news),评论表(comment),News表的categoryId和category表中的ID外键关联,comment表中的NewsId和News表中的Id外键关联。
在sql中执行:
如果news表和comment表中有和category表中Id=1关联,那么就会提示delete语句和外键关系冲突,执行失败。解决外键关联实现级联修改数据库相关表,就用到了触发器。
很简单,在要删除的Category表中新建一个触发器,设计一段从下到上逐步删除的SQL语句:
数据库中有三张表,新闻类别表(category),新闻表(news),评论表(comment),News表的categoryId和category表中的ID外键关联,comment表中的NewsId和News表中的Id外键关联。
在sql中执行:
delete from category where Id =1
如果news表和comment表中有和category表中Id=1关联,那么就会提示delete语句和外键关系冲突,执行失败。解决外键关联实现级联修改数据库相关表,就用到了触发器。
很简单,在要删除的Category表中新建一个触发器,设计一段从下到上逐步删除的SQL语句:
USE [newssystem] GO /****** 对象: Trigger [dbo].[trigCatgoryDelete] 脚本日期: 07/26/2012 19:44:26 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Jesse -- Create date: 2012-7-26 -- Description:删除类别触发器 -- ============================================= ALTER TRIGGER [dbo].[trigCatgoryDelete] ON [dbo].[Category] instead of DELETE AS BEGIN --delete news where categoryid=(select id from deleted) -- declare @Id int -- select @Id=id from deleted -- delete news where categoryId=@id -- delete category where id=@id declare @caId int select @caId =id from deleted --删除评论 delete comment where newsId in(select newsId from news wherer caId=@caId) --删除新闻 delete news where categoryId=@caId --删除类别 delete category where id=@caId END
相关文章推荐
- 通过触发器实现数据库的即时同步
- 拖拽自动生成的DataGridView和BindingSource操作数据库(增加,修改,删除)---自己实现
- Spring整合Quartz实现动态定时器,相关api,定时器添加,删除,修改
- Redis源码剖析和注释(十四)---- Redis 数据库及相关命令实现(db)
- discuz数据库迁移,改密码后,相关配置文件修改
- 动态添加行并实现每行的级联并把值保存到数据库中的实现方法
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- 数据库的相关操作:如连接、查询、添加、删除、修改、分页显示
- discuz数据库迁移,改密码后,相关配置文件修改
- 通过触发器实现记录数据的修改日志
- 连接数据库实现添加,删除,修改,AJAX异步,分页,查询等操作,
- 通过触发器实现数据库的即时同步(摘zjcxc)
- mysql的数据库相关维护操作:重启、修改连接数、删除连接
- SilverLight触发器加Command命令实现一对多级联查询
- 不使用Django ORM对数据库进行修改 保证一个方法实现原子性,一致性
- redis(jedis)相关API ,实现与关系型数据库相似的功能
- 数据库表的自增ID createDate和updateDate 用JPA注解代替触发器实现
- SQL Server创建数据库和数据表的相关约束实现方法
- Hadoop-数据库发送和接收相关实现-DataXceiver解析<转>
- 用SQL实现学籍管理系统相关的表操作(转载来的部分已修改)用mysql5.5做的