我要删除具有多对多关系的一个站点上的表中的一行。我还想删除该关系另一侧的所有相关行。
例如,假设我有以下表格,并且想从中删除一行Cars
。我也想从中删除所有相关的行Drivers
,当然,也删除其中不再需要的任何行CarDrivers
。
Table Cars:
CarID int
CarName nvarchar(100)
Table Drivers:
DriverID int
DriverName nvarchar(100)
Table CarDrivers:
CarID int
Driver int
我知道如何在SELECT
查询中连接以上表格。但是我看不到如何删除整个关系中的数据。
注意:关系的两端都实现级联删除。因此,例如,从中Cars
删除行将删除中的任何相关行CarDrivers
。但是显然,这不会传播到Drivers
表中。
我认为最好的方法是必须先删除相关表的数据。换句话说,如果要删除汽车和使用该汽车的相应驱动程序,则必须先删除驱动程序,然后再删除汽车。由于,联接表将删除正确的记录ON CASCADE DELETE
。
试试这个:
delete
from Drivers
where DriverID in
(
select d.DriverID
from Drivers d
inner join CarDrivers cd
on d.DriverID = cd.Driver
inner join Cars c
on c.CarID = cd.CarID
where c.CarID = 1
)
delete
from Cars
where CarID = 1
自然,您不需要在1
那里进行硬编码,如果您在存储的proc中利用此代码段,则可以使用包括参数在内的任何内容。
复制和粘贴我前面问题的一些介绍部分。 我在Eclipselink2.3.2中使用JPA2.0,在其中,我在产品和它们的颜色之间建立了多对多的关系。一个产品可以有多种颜色,一种颜色可以与多种产品相关联。这种关系在数据库中由三个表表示。 null 实体类。
我正在使用hibernate多对多的关联。我有3个表(STUDENT,COURSE和STUDENT_COURSE)。在3个表中,2个是主表,1个是提供关系的中间表。当记录从STUDENT中删除时,相应的映射将从Student_Course中删除。我的要求是它甚至应该从课程表中删除记录。考虑以下STUDENT_COURSE条目: 当从学生表中删除101时,上述表中的第一个条目被删除,但课程表中对应于
我目前正在开发一个网络票证系统,并有课程来存储我的票证数据。每个票据都可以有多个相关标签,为了管理这些标签,我创建了一个标签编辑器。这很好,只缺少一个删除选项。到目前为止,大多数删除都失败了,原因是该标签仍然被另一个票证引用,这需要先删除它。在寻找解决方案的过程中,我遇到了CascadeType。删除,这似乎正是我想要的。 但是,由于ticket对象包含一组标签,而不是相反,因此每次我删除一张ti
我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?
文章实体 标签实体 然后我测试新增,随便添加几条数据 查询文章id=1 查询标签id=6 删除文章没问题 但是,删除标签id=6就报错了。服务器错误
问题内容: 我有两个与多对多关联的表。 —数据库片段: 加载 ID 名称 会话 ID 日期 sessionsloads LoadId 的SessionID —hibernate映射片段: 为了从关联表 sessionloads中 删除一个条目,我执行以下代码: 但是,启动后,此代码将保持不变。 删除关联的正确方法是什么? 问题答案: 您需要更新和之间的链接的两端: 实际上,许多开发人员使用防御性方