删除与多张表有主外键关系的表中的数据

时间:2022-02-10 00:43:28
我有一个a表,b、c、d、e...表是他的字表。我要在删除a表中的数据时,判断如果 子表中有对应的数据则不删除,如果 没有则删除。我应该怎么做?

8 个解决方案

#1


那就select一下其它表,看有没有数据

#2


你删除的时候SQL Server自己会去查询其它子表,假设不能删除就会抛出异常,可以删除就直接删除。

实际上就算是你自己写几条sql语句(或者存储过程)来执行删除,这样一个操作的目的是删除记录,那么当删除失败(不管是什么理由造成的)的时候,你也应该使用 raiserror 语句通知上层的 .net 程序。

所以这两个是同样的流程。一般来说,你无需去写查询代码,直接去删除就是了。

#3


楼上的说得不错,我学习学习,顶一下

#4


判断一下子表中有没有使用到A表的数据。
有的话删除子表在删除主表

#5


sp1234
 你说的那个raiserror好像是在数据库里操作的吧?

#6


引用 2 楼 sp1234 的回复:
你删除的时候SQL Server自己会去查询其它子表,假设不能删除就会抛出异常,可以删除就直接删除。

实际上就算是你自己写几条sql语句(或者存储过程)来执行删除,这样一个操作的目的是删除记录,那么当删除失败(不管是什么理由造成的)的时候,你也应该使用 raiserror 语句通知上层的 .net 程序。

所以这两个是同样的流程。一般来说,你无需去写查询代码,直接去删除就是了。

正解,主处键关系,本身就约束关系的,所以,你不用去判断。
只需处理删除失败的情况就OK了

#7


能不能提供一个raiseerror语句和简单sql语句一起使用的示例呢?以前没有用过raiseerror……

#8


判断一下子表中有没有使用到A表的数据。
有的话删除子表在删除主表

#1


那就select一下其它表,看有没有数据

#2


你删除的时候SQL Server自己会去查询其它子表,假设不能删除就会抛出异常,可以删除就直接删除。

实际上就算是你自己写几条sql语句(或者存储过程)来执行删除,这样一个操作的目的是删除记录,那么当删除失败(不管是什么理由造成的)的时候,你也应该使用 raiserror 语句通知上层的 .net 程序。

所以这两个是同样的流程。一般来说,你无需去写查询代码,直接去删除就是了。

#3


楼上的说得不错,我学习学习,顶一下

#4


判断一下子表中有没有使用到A表的数据。
有的话删除子表在删除主表

#5


sp1234
 你说的那个raiserror好像是在数据库里操作的吧?

#6


引用 2 楼 sp1234 的回复:
你删除的时候SQL Server自己会去查询其它子表,假设不能删除就会抛出异常,可以删除就直接删除。

实际上就算是你自己写几条sql语句(或者存储过程)来执行删除,这样一个操作的目的是删除记录,那么当删除失败(不管是什么理由造成的)的时候,你也应该使用 raiserror 语句通知上层的 .net 程序。

所以这两个是同样的流程。一般来说,你无需去写查询代码,直接去删除就是了。

正解,主处键关系,本身就约束关系的,所以,你不用去判断。
只需处理删除失败的情况就OK了

#7


能不能提供一个raiseerror语句和简单sql语句一起使用的示例呢?以前没有用过raiseerror……

#8


判断一下子表中有没有使用到A表的数据。
有的话删除子表在删除主表