SQL 如何把两个表相关联的数据一同删除

a为主表,b为子表子表与主表的ID关联删除了主表的数据,子表的数据没有删除如何把两个表相关联的数据一同删除... a为主表,b为子表 子表与主表的ID关联
删除了主表的数据,子表的数据没有删除
如何把两个表相关联的数据一同删除
展开
 我来答
wylxl99
2012-02-03 · TA获得超过364个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:120万
展开全部
其实你这个问题最好用数据库本身的外键解决。就是在子表建立指向父表的外键。当删除主表数据时,只要加上delete语句加上 on cascade,所有子表引用的数据就删除了。
Ourde
推荐于2017-11-24 · TA获得超过271个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:135万
展开全部
删除主-从表的记录可以建立简单存储过程来实现:
CREATE PROCEDURE [存储过程]
(
@Id VARCHAR(50)
)
AS
DELETE [子表] WHERE [关联Id] = @Id
DELETE [主表] WHERE [Id] = @Id
GO

执行方法:EXECUTE [存储过程] @Id
追问
存储过程是无效的
追答
怎么会呢?具体信息如何?我刚测试过了,是可以的,其中A表为主表,B表为子表,B表中的A_Id对应A表中的ID,代码如下:
CREATE PROCEDURE [Test_Pro] (@Id VARCHAR(50))
AS
DELETE [A] WHERE [Id] = @Id
DELETE [B] WHERE [A_Id] = @Id
GO
例如要删除A表B表中Id为100000的记录,执行:EXECUTE [Test_Pro] '100000'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5c2488a
2012-02-03 · TA获得超过172个赞
知道小有建树答主
回答量:367
采纳率:100%
帮助的人:329万
展开全部
楼上还有一种方式的。把子表的和主表关联的ID设为外键,再查看外键和主健的关系,在里面的INSERT和UPDATE规范选项里的删除规则设置为层叠,这样删除主表里的数据子数的数据也会跟着删除
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qthwcy
2012-02-03
知道答主
回答量:30
采纳率:0%
帮助的人:9.3万
展开全部
已经删除了主表的数据,那就再写一条删字表的sql:
delete from 子表 where 子表.id not in (select id from 主表);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鸿德亦泰_孟
2012-02-03
知道答主
回答量:38
采纳率:0%
帮助的人:20.7万
展开全部
delete from b where id in
(select id from a where id in (*,*,*))
delect from a where id in (*,*,*)
ID必需相同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式