【发布时间】:2015-07-30 21:40:58
【问题描述】:
我在 Order:Stops 之间有一个 1:Many 的关系。
Order.OrderId 是主键。 Order.FileNumber 是我要删除 Stops by 的列。
Stop.OrderId 是外键,引用订单的主键。一个订单可以有多个止损点。 Stop.StopId 是 Stop 的主键。
首先删除订单,SQL 在外键约束上出现错误。首先删除止损,然后删除其对应的订单,不会导致任何错误。
如果我想删除我知道 Order.FileNumber 的 Stops,SQL 语句会是什么样子?
我假设是这样的:
DELETE FROM [dbo].[Stop] Stop LEFT JOIN [dbo].[Order] Ord
WHERE Ord.DriverNo = 123 AND Ord.FileNo = 456789
AND Ord.OrderId = Stop.OrderId
GO
但没有任何效果。我们正在使用 SQL Server 2012。
【问题讨论】:
-
在所有子记录都消失之前,您无法删除父表中的记录,除非您设置了级联删除。并且删除只能从单个表中删除记录。你不能做多表删除。
-
我实际上是先删除孩子,而不是父母。
标签: sql sql-server sql-server-2008 sql-delete