delete一条语句可以同时删除2个表里的数据吗?

renmms 2011-09-16 03:33:20
给定两个表(sql)
table group: groupid,createtime
table groupinfo: groupid,groupname,groupdesc
要求删除所有createtime>某个时间点的在group及groupinfo表中记录

如果写2条SQL语句的话很简单,请问能写一条sql语句实现吗?
...全文
3191 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2011-09-18
  • 打赏
  • 举报
回复
/*
标题:两表通过字段关联进行级联删除。
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-11-20
地点:广东深圳
*/

create table ta(id int not null)
create table tb(id int , aid int)
insert into ta values(1)
insert into ta values(2)
insert into tb values(1 , 1)
insert into tb values(2 , 2)
insert into tb values(3 , 1)
go

--一、查看原始数据
--ta表的原始数据
select * from ta
/*
id
-----------
1
2
*/
--tb表的原始数据
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/

--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/

--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表
insert into ta values(1)
--为ta创建主健
alter table ta add constraint pk_ta_id primary key (id)
go
--为tb创建外健,并指定级联删除
alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade
go
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
2 2
*/

--删除级联约束
alter table tb drop constraint fk_tb_aid
go
--删除测试表
drop table ta , tb
go
ningweidong 2011-09-18
  • 打赏
  • 举报
回复
要想同时删两个表,只能用触发器了
我没有吃饭 2011-09-17
  • 打赏
  • 举报
回复

--级联删除
create table ta(id int not null primary key)
insert ta
select 1

create table tb(id int foreign key references ta(id) on delete cascade)
insert tb
select 1

select * from ta
select * from tb
delete ta
select * from ta
select * from tb

drop table tb
drop table ta

yubofighting 2011-09-16
  • 打赏
  • 举报
回复
级联和触发器外,你也可以将两条语句封装在一个存储过程中

create proc delete_pro

as
begin
set nocount on
delete from group where createtime>某个时间
delete from groupinfo where createtime>某个时间
end
GO

执行 exec delete_pro
oO寒枫Oo 2011-09-16
  • 打赏
  • 举报
回复
在group表里面建立一个触发器就可以了
gw6328 2011-09-16
  • 打赏
  • 举报
回复
级联 在主外键关系 上直接设置,用菜单操作方式。
qin_0 2011-09-16
  • 打赏
  • 举报
回复
以前有听到同学提过.可是没有实现.围观求代码.!
wanzegui 2011-09-16
  • 打赏
  • 举报
回复
/*触发器*/
CREATE TRIGGER tri_delGroupInfo
ON group
for delete
begin
delete from groupinfo a,deleted b where a.groupid=b.groupid
end
renmms 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]

触发器和级联删除
[/Quote]


怎么写啊?请写出代码
renmms 2011-09-16
  • 打赏
  • 举报
回复
触发器和级联删除
怎么写啊?请写出代码
xiangaylian 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
触发器和级联删除
[/Quote]
顶下
顺便顶下楼主头像。
CalvinR 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]

触发器和级联删除
[/Quote]
顶…………
--小F-- 2011-09-16
  • 打赏
  • 举报
回复
触发器和级联删除
晓蛋 2011-09-16
  • 打赏
  • 举报
回复
我是来看楼主头像和昵称的。
chuanzhang5687 2011-09-16
  • 打赏
  • 举报
回复
要不然用触发器
xuam 2011-09-16
  • 打赏
  • 举报
回复
做级联删除就行了.
chuanzhang5687 2011-09-16
  • 打赏
  • 举报
回复
两个表只能用两条语句来删除

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧