sql server数据库怎样同时删除两张表的数据
展开全部
解决办法:
1、在设计数据库表时,通过设置级联删除操作来完成。
2、可以写触发器完成操作。
3、先删除主表的数据行,然后根据关联的外键值来删除附表中的相应行数据即可。
具体方法:
作为外键暂且叫它主表,Delete from Main Where id=@id
则要先删除子表当中 Delete from Detail where MainId = @id
为了保证数据完整性,最好将上面的操作包含在一个事务中,如果两个语句影响的行数都大于零,则提交,否则回滚。
1、在设计数据库表时,通过设置级联删除操作来完成。
2、可以写触发器完成操作。
3、先删除主表的数据行,然后根据关联的外键值来删除附表中的相应行数据即可。
具体方法:
作为外键暂且叫它主表,Delete from Main Where id=@id
则要先删除子表当中 Delete from Detail where MainId = @id
为了保证数据完整性,最好将上面的操作包含在一个事务中,如果两个语句影响的行数都大于零,则提交,否则回滚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主表:Parent,子表:Child,关系:Parent.ID = Child.ParentID
1、同时删除两个表中的所有数据:先子表,再父表,使用外连接(父表可能仍有数据)
DELETE * FROM Child RIGHT JOIN Parent
ON Child.ParentID = Parent.ID;
2、同时删除两个表中符合某个条件的数据:先子表,再父表,使用内连接
DELETE * FROM Child INNER JOIN Parent
ON Child.ParentID = Parent.ID
WHERE 条件子句...;
1、同时删除两个表中的所有数据:先子表,再父表,使用外连接(父表可能仍有数据)
DELETE * FROM Child RIGHT JOIN Parent
ON Child.ParentID = Parent.ID;
2、同时删除两个表中符合某个条件的数据:先子表,再父表,使用内连接
DELETE * FROM Child INNER JOIN Parent
ON Child.ParentID = Parent.ID
WHERE 条件子句...;
追问
right 附近存在错误,还有就是delete后面不能出现* 或字段,因为我们删除就是删除一行记录。
追答
@^_^@ 有一阵子没有写SQL了!
DELETE 后只能跟一个数据表名,所以上面给出的两个语法都是错误的。
DELETE不能对数据记录集进行操作(如使用子查询返回的结果集),因为一旦涉及两个以上的表,会有级联等问题,单纯的DELETE语句是无法应付这种复杂情况的。
不使用楼主给出的三个条件条,同时删除两个表的数据是比较困难的。
当然,如果写一个函数来处理此事,再用EXECT语句执行该函数,是可以达到要求的,但这除了钻牛角以外,没有太大的意义! 呵呵!到此为止吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--a_table 主表
--b_table 从表
alter table b_table
add constraint fk_b_table_b字段 foreign key(b字段) references a_table(a字段)
on delete cascade
delete from a_table where 条件
--b_table 从表
alter table b_table
add constraint fk_b_table_b字段 foreign key(b字段) references a_table(a字段)
on delete cascade
delete from a_table where 条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么非得一条呢 是考试吗 不解
追问
考试中有这样的问题,想知道解决方法。
追答
我觉得应该是考察 两个具有主外键关系的表 需要先删外键表 再删主键表吧
一条语句 确实没用过 一起学习
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询