sql – 删除多对多关系中的相关行
发布时间:2020-12-12 07:04:46 所属栏目:MsSql教程 来源:网络整理
导读:我正在删除多对多关系的一个站点上的表中的一行.我还想删除该关系另一侧的任何相关行. 例如,假设我有以下表格,我想从Cars中删除一行.我还想删除Drivers中的任何相关行,当然还有CarDrivers中不再需要的任何行. Table Cars:CarID intCarName nvarchar(100)Table
我正在删除多对多关系的一个站点上的表中的一行.我还想删除该关系另一侧的任何相关行.
例如,假设我有以下表格,我想从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 当然,您不需要对其进行硬编码,如果您在存储过程中使用此代码段,则可以使用包括参数在内的任何内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Sql server中TRANSACTION的范围是什么
- sql – 奇怪的INNER JOIN语法和封装
- .net – 为什么这个DataAdapter不会将行插入数据库?
- 实体框架 – 实体框架5 – 如何从现有数据库生成POCO类
- SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(中)
- sql – MERGE违反PRIMARY KEY约束
- sql-server – 恢复SQL数据库的最佳PowerShell脚本是什么?
- grails – 隐藏数据库密码使用编解码器规范在datasource.gr
- sqlserver判断字段是否存在,表是否存在
- .net framework 类库中必须掌握的命名空间(或者类)