×

sql触发器级联删除

sql触发器级联删除(级联删除的SQL触发器如何写)

admin admin 发表于2024-01-07 16:39:59 浏览61 评论0

抢沙发发表评论

大家好,sql触发器级联删除相信很多的网友都不是很明白,包括级联删除的SQL触发器如何写也是一样,不过没有关系,接下来就来为大家分享关于sql触发器级联删除和级联删除的SQL触发器如何写的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

级联删除的SQL触发器如何写

--sql代码:--创建数据库实体:test2010use mastergoif exists (select * from sysdatabases where name = ’test2010’)drop database test2010gocreate database test2010gouse test2010gocreate table province( id int identity(1, 1) not null, title varchar(50) not null, primary key(id))gocreate table city_info( id int identity(1, 1) not null, title varchar(50) not null, p_id int not null, primary key(id))go--触发器:tri_deleteSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER tri_delete ON province for deleteAS BEGIN SET NOCOUNT ON; declare @prov_id int, @prov_name varchar(50)if exists (select count(*) from deleted) select @prov_id = id, @prov_name = title from deleted delete from city_info where p_id = @prov_idENDGO--向数据库插入数据insert into province values(’浙江’)insert into province values(’江苏’)insert into province values(’江西’)insert into city_info values(’宁波’, 1)insert into city_info values(’杭州’, 1)insert into city_info values(’温州’, 1)insert into city_info values(’南京’, 2)insert into city_info values(’苏州’, 2)insert into city_info values(’扬州’, 2)insert into city_info values(’南昌’, 3)--查看两张表中的数据:select * from city_infoselect * from province--删除数据:delete from province where title = ’江西’ 以上我是在SQL Server 2005中检验过的,其实我并不提倡用触发器。其实级联删除就能解决问题了。可以通过在创建数据库的代码中,增加级联删除的就好了。如下:--sql代码:use mastergoif exists(select * from sysdatabases where name = ’test2010’)drop database test2010gocreate database test2010gouse test2010gocreate table province( id int identity(1, 1) not null, title varchar(50) not null, primary key(id))gocreate table city_info( id int identity(1, 1) not null, title varchar(50) not null, p_id int not null, primary key(id))goalter table city_info add constraint fk_province foreign key(p_id) references province(id)on delete cascadego--出入测试数据:insert into province values(’浙江’)insert into province values(’江苏’)insert into province values(’江西’)insert into city_info values(’宁波’, 1)insert into city_info values(’杭州’, 1)insert into city_info values(’温州’, 1)insert into city_info values(’南京’, 2)insert into city_info values(’苏州’, 2)insert into city_info values(’扬州’, 2)insert into city_info values(’南昌’, 3)--查看插入的数据:select * from provinceselect * from city_info--检验测试的数据:delete from province where title = ’江西’--再次查询数据:select * from provinceselect * from city_info

如何在sql中实现级联删除

分类: 电脑/网络 》》 程序设计 》》 其他编程语言 问题描述: 我想做一个简易的单板块的论坛,有帖子表和回复表,回复表里有帖子编号字段和回复编号字段,帖子编号是外键。有一个功能就是管理员把一条留言删除后相应的回复自动删除。请问在sql中如何设置 解析: 也可以用建立关系来实现,打开SQL中的“关系图”-》建立关系图,然后选择你要建立关系的表,如果你的主键和外键已经建立好,则会自由关联,如果没有就手工拖一下,接下来就是选择“级联更新相关字段”和“级联删除相关字段”即可。

SQL 中 触发器 两个表的级联删除

你写的就正确也可以这样,但必须一笔一的删除delete from zhigongwhere 仓库号 =(select 仓库号 from deleted)

sql触发器实现级联删除,但是级联的删了,原表没删掉,是代码有什么问题么

instead of delete因为用的是这个替代触发器,会替代原有的操作,造成原有的操作无效如果没有外键关系的,可以用for出发器,或者建立主外键关系设置级联删除操作,而不用触发器也可以

sql联动删除,删除触发器怎样来设置

关于合并,没有太明白你的具体要求。第二个问题,两种解法,如果是innodb表可以通过建立外键约束来级联删除,语法如下: FOREIGN KEY (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION 第二种就是设置after delete trigger

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

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”也被数据库自动删除了,这就是级联删除

如果你还想了解更多这方面的信息,记得收藏关注本站。