问题标签 [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.
java - Hibernate Envers:审计表中没有用于级联删除的删除条目
我正在使用 Hibernate envers 来跟踪对我的数据库对象所做的所有更改。这些对象有时通过(单向)父子关系相关。因为我需要应该列出所有已删除对象的查询,所以我依靠 envers 上的审计表来标记已删除对象(*_aud 表中的 revtype 列)。但是,当它们的父对象被删除时,似乎没有为我的任何子对象创建这些条目。
我的对象类如下所示:
我怀疑它与以某种方式绕过休眠环境的级联删除操作有关。如何在创建子对象的审计表中的条目的同时确保在删除引用的父对象时所有子对象都被数据库自动删除?
java - 从同一张表中级联删除
嗨,我正在使用 JPA2 和 Hibernate 实现,我得到了一个像这样的简单映射:
和第二个表 (SubscribedUser) 与 id 类:
假设我们有 2 条记录是 subscribed_users 表:1。
2.
问题是,当我删除 id = 1 的用户时。使用 cascade 选项正确删除了第一条记录,但出现错误,因为在 subscribed_users 表的第二个条目中仍然有对 id = 1 的用户的引用. 是否有可能级联删除第二条记录?
谢谢
大卫
php - PHP、MySQL、类别和子类别——删除
我有一个这样的 MySQL 表:
我想确保在删除父级时删除所有子级。起初,我想通过在表中添加这样的外键来做到这一点:
这行不通。我也尝试过内部关系,但没有成功。
父母和他们的孩子通过递归 PHP 函数链接。MySQL中有没有办法实现这个目标,或者应该使用PHP来完成?
sql-server - 不了解 Sql Server 错误
我有一个用户表(用户),需要创建一个新表来跟踪哪些用户推荐了其他用户。所以,基本上,我在同一个表中的行之间创建了一个多对多的关系。
所以我正在尝试使用 UserId 和 UserReferredId 列创建表 UserReferrals。我将两列都设为复合主键。这两列都是链接到 User.UserID 的外键。
由于删除用户也应该删除关系,因此我将两个外键都设置为级联删除。删除用户后,UserReferrals 中的所有相关行也应删除。
但这给了我信息:
'User' table saved successfully
'UserReferrals' table Unable to create relationship 'FK_UserReferrals_User'. Introducing FOREIGN KEY constraint 'FK_UserReferrals_User' on table 'UserReferrals' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.
我没有收到此错误。级联删除只会删除带有外键的行,对吗?那么它怎么会导致“循环级联路径”呢?
感谢您的任何提示。
sql - sql删除级联不起作用
我有一个带有 2 个表的 Microsoft SQL 数据库:狗和猫。
“dog”表有一个名为“food”的主键列,它与“cat”表中的一个名为“food”的列相关,作为外键。
表之间的关系有一个“on delete cascade”规则集,所以当我从“dog”表中删除一行时,“cat”表中的相关行也应该被删除。
但是“cat”表中的行确实会被删除,它们会保留下来。我使用 Microsoft SQL 数据库管理器删除“dog”表中的行。
知道为什么会这样吗?我是否需要使用特殊的删除 sql 命令以这种方式删除一行?
//编辑
表格的脚本是:
asp.net - NHibernate 一对多删除不级联
我有一个“照片”课程和一个“评论”课程。一张照片可以有多个评论分配给它。
我在我的 HBM 映射文件中将此配置为一对多关系,并针对 Photo.hbm.xml 映射文件中的“评论”包设置了 cascade="all-delete-orphan"。
但是,如果我尝试删除具有 1 个或多个相关评论的照片,我会收到“DELETE 语句与 REFERENCE 约束“FK_Comments_Photos”冲突”
我针对 Photo.hbm.xml 中的 Comments 包尝试了其他几个级联选项,但无论我将其设置为什么,我每次都会得到相同的结果。我只想能够删除照片并自动删除任何相关的评论。
这是我的照片映射(为简洁而编辑):
这是我的评论映射(为简洁而编辑):
当我尝试删除带有相关评论的照片时,是否有人对为什么没有发生级联有任何建议?
更新:我可以让级联发生的唯一方法是在 SQL Server 中针对这种与“级联”的关系配置“删除规则”,这样做意味着我不需要在我的 NHibernate 中指定任何级联操作映射。然而,这对我来说并不理想——我希望能够在理想情况下配置 NHibernate 映射中的级联行为,所以我仍然很困惑为什么它似乎没有注意到我的 NHibernate级联设置?
asp.net - NHibernate 'Where' 子句导致级联删除问题
我有以下“照片”对象的映射文件(为简洁而编辑):
我想对“评论”包应用 Where 子句,以仅检索“已批准”属性 = true 的评论。然而,当我把它放在适当的位置时,我遇到了一个问题场景,其中删除的照片对象没有级联删除的未批准评论(并且留下孤立的评论记录),因为它不符合 where 子句的条件!本质上,我希望除了级联删除之外遵守 where 子句,在这种情况下,我总是希望在删除照片时删除与照片相关的任何评论。
这是我的评论映射文件的编辑副本:
我怎样才能解决这个问题?
sql - 在 mySql 中创建外键的问题
我通过以下语句在我的 sql 中创建了一个外键。
创建似乎成功然后我执行删除语句
然而在用户中,引用它的行仍然存在。我打开 mysql 工作台,它没有显示任何外键已创建的迹象。有谁知道为什么会这样?或者我做错了什么?它在两个表中是一对一的关系。
java - 将集合设置为“new ArrayList()”时级联休眠删除
我有一个用 hibernate 映射的对象,其中包含一个 id 和一个集合。在某个时间点,当对象包含其集合中的项目时,我想做obj.setCollection(new ArrayList())
并让它从数据库中删除以前在集合中的项目。如果有人可以提供帮助,将不胜感激。说明问题的代码:
ORM:Foo 1-* Bar 和 Bar 1-1 Foo