Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建一个过程,当子表中的任何记录';它不在父表中_Sql_Sql Server - Fatal编程技术网

Sql 创建一个过程,当子表中的任何记录';它不在父表中

Sql 创建一个过程,当子表中的任何记录';它不在父表中,sql,sql-server,Sql,Sql Server,当我从我们的应用程序中删除一条记录时,它会在某些表中保留一些记录。我正在寻找一些帮助,以了解如何创建一个过程,从已从父表中清除的子表中删除记录 一般来说,你的问题的答案称为存在量化。在SQL中,其形式为: delete from C where not exists ( select 1 from P where P.child_key = C.key ) 然而,你不应该处于这样的境地:孩子永远不应该没有父母。子表应该声明一个外键,该外键需要父表的存在。这样,将插入子对象的父

当我从我们的应用程序中删除一条记录时,它会在某些表中保留一些记录。我正在寻找一些帮助,以了解如何创建一个过程,从已从父表中清除的子表中删除记录

一般来说,你的问题的答案称为存在量化。在SQL中,其形式为:

delete from C where not exists (
    select 1 from P 
    where P.child_key = C.key
)
然而,你不应该处于这样的境地:孩子永远不应该没有父母。子表应该声明一个外键,该外键需要父表的存在。这样,将插入子对象的父对象,并且当引用该父对象的子对象存在时,不能删除该父对象

在存在此类外键约束的情况下,唯一允许的事件顺序是先删除父项中存在的子项
,然后删除父项。为了正确起见,这两条语句应该是事务的一部分


一些评论建议使用声明性引用完整性(DRI)来删除子行。我不是球迷;我使用DRI作为约束的一种形式来创建规则。对于数据操作,我建议使用显式代码,这样在应用程序级别可以更轻松地处理意外事件

它发生在组织不良的数据库中,因此您需要清理数据

delete childTable where FK_field not in (
select PK_field from parentTable)

为避免将来出现此问题,请在子表中创建FK约束。

此处需要更多信息。。。你的桌子结构是什么样的?你能提供一些样本数据吗?您已经尝试过哪些查询?我们无法神奇地给你一个答案,而不知道你想做什么。听说过
外键约束
级联删除
吗?你在找级联吗?