SQL 如何把两个表相关联的数据一同删除
a为主表,b为子表子表与主表的ID关联删除了主表的数据,子表的数据没有删除如何把两个表相关联的数据一同删除...
a为主表,b为子表 子表与主表的ID关联
删除了主表的数据,子表的数据没有删除
如何把两个表相关联的数据一同删除 展开
删除了主表的数据,子表的数据没有删除
如何把两个表相关联的数据一同删除 展开
8个回答
展开全部
删除主-从表的记录可以建立简单存储过程来实现:
CREATE PROCEDURE [存储过程]
(
@Id VARCHAR(50)
)
AS
DELETE [子表] WHERE [关联Id] = @Id
DELETE [主表] WHERE [Id] = @Id
GO
执行方法:EXECUTE [存储过程] @Id
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'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上还有一种方式的。把子表的和主表关联的ID设为外键,再查看外键和主健的关系,在里面的INSERT和UPDATE规范选项里的删除规则设置为层叠,这样删除主表里的数据子数的数据也会跟着删除
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已经删除了主表的数据,那就再写一条删字表的sql:
delete from 子表 where 子表.id not in (select id from 主表);
delete from 子表 where 子表.id not in (select id from 主表);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete from b where id in
(select id from a where id in (*,*,*))
delect from a where id in (*,*,*)
ID必需相同
(select id from a where id in (*,*,*))
delect from a where id in (*,*,*)
ID必需相同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询