问题标签 [cascade]
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.
sql - 外键级联多个路径和循环有什么问题?
在 SQL Server 2005 中,我刚刚发现了臭名昭著的错误消息:
在 YYY 表上引入 FOREIGN KEY 约束 XXX 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
现在,StackOverflow 有几个关于此错误消息的主题,所以我已经有了解决方案(在我的情况下,我将不得不使用触发器),但我很好奇为什么会出现这样的问题。
据我了解,他们基本上想要避免两种情况——循环和多条路径。循环将是两个表具有彼此级联的外键。好的,一个循环也可以跨越多个表,但这是基本情况,更容易分析。
当 TableA 具有 TableB 和 TableC 的外键,而 TableB 也具有 TableC 的外键时,就会出现多条路径。再次 - 这是最小的基本情况。
我看不到在任何这些表中删除或更新记录时会出现任何问题。当然,您可能需要多次查询同一个表以查看哪些记录需要更新/删除,但这真的有问题吗?这是性能问题吗?
在其他 SO 主题中,人们甚至将使用级联标记为“有风险的”,并指出“解决级联路径是一个复杂的问题”。为什么?风险在哪里?哪里有问题?
java - 如何在休眠中的多对一映射上定义反向级联删除
我有两个类 A 和 B。许多 B 可以与单个 A 关联,因此从 B 到 A 是多对一关系。我将关系映射为:
A 没有映射到 B。记住这一点,我们打算在 B 关联的 A 被删除时删除它。如果我可以在 B 中的多对一关联上定义一个 inverse="true" ,这可能是可能的,但休眠不允许这样做。
有人能帮忙吗?我们不想为此在 A 中写任何东西。
sql - SQL Server:自引用 FK,触发器而不是 ON DELETE CASCADE
我需要对名为 CATEGORY 的表执行 ON DELETE CASCADE,该表具有以下列 CAT_ID (BIGINT) NAME (VARCHAR) PARENT_CAT_ID (BIGINT)
PARENT_CAT_ID 是 CAT_ID 上的 FK。显然,可爱的 SQL Server 不允许我使用 ON DELETE CASCADE 声明循环或多个删除路径。
我经常看到的一个解决方案是触发器。我做了以下触发器:
当我手动删除具有子类别的类别时,出现以下异常:
知道我的触发器有什么问题吗?
更新: 抱歉编辑,但我有另一列 CATEGORY.CAT_SCH_ID,它是另一个表 CAT_SCH.ID 的 FK。这个 FK 也有一个 CASCADE DELETE,这意味着一旦我删除了一个 CAT_SCH,它的 CATEGOries 也必须被删除。因此,当我定义触发器时出现此错误:
无法在表 'CATEGORY' 上创建 INSTEAD OF DELETE 或 INSTEAD OF UPDATE TRIGGER 'TRG_DEL_CATEGORY_WITH_CHILDREN'。这是因为该表有一个 FOREIGN KEY 和级联 DELETE 或 UPDATE。
有任何想法吗?
jquery - Jquery.cascade 插件改变 Ajax URL 的格式
我在我的 Asp.Net MVC 应用程序中使用jQuery.Cascade插件。我的工作方式如下:
但是,当它触发时,它会通过以下请求调用我的控制器中的操作:
我更喜欢的是:
现在在提供的示例中有以下注释:
将父选择的选定值作为 'val=' 传递给 url,但接受完整的 ajax 选项哈希,因此您也可以附加其他数据
所以我假设我希望实现的目标是可能的——但作为 jQuery 和 Ajax 的新手,我不知道如何做到这一点。任何人都可以帮忙吗?
nhibernate - NHibernate Cascade none 仍在更新相关实体
然后我使用 Fluent NHibernate 及其自动映射功能来映射以下简化的 POCO 类:
然后,我将覆盖以下映射以明确设置从网页到网页类型的级联:
对于任何纯粹的 NHibernate 读者,这里是 fluent 生成的 xml 映射:
当我测试更新不会通过网页级联到 WebpageType 时,问题就来了,基本上他们会!
我有以下测试:
上述测试包含在一个全局事务中。
测试失败,NHibernate 确实对相关 WebpageType 的名称执行了更新。删除和保存(创建新)级联工作正常,不会级联。
我是否误解了级联和/或我的逻辑/测试有问题。
任何帮助/建议表示赞赏。谢谢。
c# - NHibernate Definitive Cascade 应用指南
是否有任何 Internet 资源对 NHibernate 的所有级联设置有明确的指南,其中将包括类结构、HBM 的示例以及每个级联设置对与 NH 的所有关系的操作的含义。
如果有以最正确的方式完成常见关联的示例,例如设置一个状态表,您将永远不会最终级联删除状态,或者删除具有 CreatedBy User 属性的对象,这将是有帮助的永远不会以级联方式删除用户等。
cocoa - 如何在 Core Data 中正确级联删除托管对象?
我有一个核心数据模型,它具有三个实体:A、B 和 C。A 与 B 具有一对多关系,B 与 C 具有多对多关系。A 的删除规则 -> B 是“级联”,B -> A 是“无动作”。B -> C 的删除规则是“No Action”,C -> B 是“Deny”。
我在对 A 实体执行删除时遇到问题。我想要发生的是以下情况:
- 我删除了 A 的一个实例(使用
deleteObject:
) - 删除传播到与 A 关联的任何 B(由于“级联”删除规则)
- 所有与 A 关联的 B 都被删除
- 属于 C 且其关联 B 已被删除的任何关系也将被删除
这可能有点令人困惑,所以让我解释一下:当一个 A 被删除时,删除所有关联的 B。并且任何引用那些 B 的 C 都不能再引用它们。
在我的测试中,我根本没有看到“级联”删除规则对我有用。当我删除一个 A 时,我processPendingChanges
会立即调用(只是为了确保删除已经完成)。然后我比较删除之前和之后在 NSManagedObjectContext 中的 A 和 B 的数量。A 的实例已被正确删除(现在 A 的总数比删除前少一个)。但是,B 的数量保持不变。因此,似乎没有遵守“级联”删除规则。
我知道我可以手动通过 A -> B 关系,并手动删除每个 B。但是,这似乎是 Core Data 免费提供的东西,所以我不想这样做,除非 Core Data 不够。欢迎提供有关使用“级联”删除规则的任何信息。
java - 删除孩子时,休眠多对一会删除所有父母
我有 Country 和 State 对象。我打算从国家到国家建立单向的多对一关系。我不想在我定义映射的国家/地区中存储对州的任何引用,如下所示。当我删除一个 State 对象时,所有国家都会被删除!
java - Hibernate 双向多对多级联混淆
我是一个休眠新手,我不完全确定如何获得我正在寻找的级联行为。
假设我有两个类 A 和 B,它们之间具有双向多对多映射。A 是所有者方,B 是反方(我希望我的术语是正确的)。
我想选择正确的级联类型,这样当我删除 A 对象时,包含它的任何 B 对象都会更新,反之亦然。
我在这里需要哪种级联类型?