问题标签 [cascading-deletes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1691 浏览

sql-server - 锁定的性质是删除时的子表(sql server)

从几天开始,我正在考虑以下情况

考虑我有 2 个表,其父子关系是一对多的。在删除父行时,我必须删除子行中与父母相关的行。简单吧?

我必须创建一个事务范围来执行上述操作我可以按以下方式执行此操作;(它的伪代码,但我使用 odbc 连接在 c# 代码中执行此操作,数据库是 sql server)

  1. 开始事务(读取已提交)
  2. 读取 child.fk = p1 的所有孩子
  3. foreach(child) 删除 child where child.pk = cx
  4. 删除 parent.pk = p1 的父级
  5. 提交反式

或者

  1. 开始事务(读取已提交)
  2. 删除 child.fk = p1 的所有孩子
  3. 删除 parent.pk = p1 的父级
  4. 提交反式

现在我有几个问题

  1. 考虑到在几秒钟内执行数千个其他操作(选择/更新/删除/插入)的实时系统场景,以上哪一个更好。

  2. 它是否确保在事务完成之前不会添加具有 child.fk = p1 的新孩子?

  3. 如果第二个问题是,那么它如何确保?它需要表级锁还是什么。

  4. sql server 是否支持任何类型的索引锁定,如果是,它的作用以及如何使用它。

问候穆巴沙尔

0 投票
1 回答
1872 浏览

django - Django外键级联删除和“related_name”参数(错误?)

本主题中,我找到了一种在不必要时防止级联删除相关对象的好方法。

但是当我们使用带有“related_name”参数的 ForeignKey 字段时,这种方法似乎失败了。在我看来,“clear()”方法可以正常工作并保存“解除关联”对象的实例。但是,在删除时,django 使用了这个对象的另一个记忆副本,因为它仍然与我们试图删除的对象相关联 - 哇哦!...再见亲戚:)

数据库是在我之前构建的,而且方式有点奇怪,所以我无法在合理的时间内逃避这些“相关名称”。有人听说过解决这种麻烦的方法吗?

0 投票
1 回答
184 浏览

database - NHibernate:删除错误

模型:我有一个模型,其中一个安装可以包含多个“计算机系统”。

数据库:表 Installations 有两列 Name 和 Description。表 ComputerSystems 具有三列 Name、Description 和 InstallationId。

映射:

我有以下安装映射:

我有以下计算机系统映射:

课程:

安装类是:

计算机系统类是:

公共类计算机系统 { 公共虚拟字符串名称 { 获取;放; } 公共虚拟字符串描述 { 获取;放; } 公共虚拟安装 安装 { get; 放; }

问题是我在尝试删除包含 ComputerSystem 的安装时遇到错误。错误是:“已删除的对象将由级联重新保存(从关联中删除已删除的对象)”。任何人都可以帮忙吗?

问候, Seb

0 投票
2 回答
559 浏览

.net - 休眠多对多删除

我有 2 个具有多对多关系的类。我想要发生的是,每当我删除一侧时,关联记录将被删除,而不关心我删除哪一侧。

简化模型:

类:

流利的自动映射与覆盖:

我正在尝试级联和反向设置的各种组合,但永远无法实现。如果我没有级联且没有反向,我的集合中会出现重复的实体。在一侧设置 inverse 会使重复消失,但是当我尝试删除一个限定时,我得到一个“已删除的对象将被级联重新保存”。

我该怎么做呢?

我应该负责清除我删除的每个对象的关联吗?

0 投票
1 回答
14169 浏览

sql - 将删除级联添加到现有表的 tsql 脚本

是否有可用于对现有表启用级联删除的脚本。谢谢。

0 投票
1 回答
292 浏览

grails - 为什么当我在 grails 上删除一对多关系的父级时,会在子级上调用 beforeInsert 事件?

我有一对多的关系,当我尝试删除一个有多个孩子的父母时,第一个孩子会调用 berforeInsert 事件。在此事件中,我有一些代码,我的意思是在插入孩子之前调用,而不是在我删除父母时调用!关于什么可能是错的任何想法?

实体:

0 投票
3 回答
136 浏览

sql-server-2005 - SQL Server 删除 - 外键

我在 SQL Server 2005 中有两个表:

  • USER表:用户等信息。
  • COUNTRY 表:保存世界上所有国家的列表。
  • USER_COUNTRY 表:哪个匹配,哪个用户访问过哪个县。它包含 UserID 和 CountryID。

例如,USER_COUNTRY 表如下所示:

我的问题是:当在 USER 表中删除用户时,如何直接删除 USER_COUNTRY 表中的关联记录。也许,通过使用外键约束?

0 投票
3 回答
9516 浏览

entity-framework - 如何使用 Entity Framework 4 从父集合中删除子实体?

我正在使用 Entity Framework 4 并且在父实体和子实体之间具有一对多的关系。我正在尝试通过从父级的子级集合中删除它来删除使用父级存储库的子级:

当我尝试保存更改时,出现以下错误:

来自“ParentChild”AssociationSet 的关系处于“已删除”状态。给定多重约束,相应的“子”也必须处于“已删除”状态。

当然,我不必使用子存储库显式删除子实体!

0 投票
1 回答
1089 浏览

mysql - mysql codeigniter 活动记录 m:m 删除

我有一个表 2 具有 am:m 关系的表,我想要的是,当我从其中一个表中删除一行时,我希望连接表中的行也被删除,我的 sql 如下,

表格1

表 2

所以我想要做的是,如果从 table1 中删除 a 行并且 id 为 1 我希望 table 中的行也有这个想法作为关系的一部分。

我想按照我目前拥有的 codeigniters 活动记录类来执行此操作,

0 投票
1 回答
1239 浏览

c# - 使用 NHibernate 删除树

我正在努力解决一个小问题,并开始得出结论,这根本不可能。

我有一个名为 Group 的表。与这些系统中的大多数一样,Group 具有 ParentGroup 和 Children 集合。所以表组看起来像这样:

我使用 FNH AutoMappings 进行了映射,但我必须为此覆盖默认值:

现在,一般的想法是能够删除一个节点及其所有子节点也被 NH 删除。所以删除唯一的根节点应该基本清空整个表。

我首先尝试过,Cascade.AllDeleteOrphan但这仅适用于删除 Children 集合中的项目,而不是删除父项。

接下来我尝试ForeignKeyCascadeOnDelete通过on delete cascade. 但是一旦我这样做了,MSSql2008 就不允许我创建这个约束,失败了:

在表 'Group' 上引入 FOREIGN KEY 约束 'FKBA21C18E87B9D9F7' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

好吧,对我来说就是这样。我想我会遍历孩子并一一删除它们,从而进行 N+1。如果有人对如何更优雅地做到这一点有建议,我很想听听。