我的表有以下关系
如您所见,FirstEntity
可以有多个 Transactions
相关记录。 Transaction
分为两个表,因为它代表继承层次结构( Entity Framework 中的每个类型表)。
我需要创建一个脚本,在给定 FirstEntityID
的情况下,删除 FirstEntityTransaction
和 Transaction
中的所有记录。然后删除应遵循以下顺序:
- 删除
FirstEntityTransaction
中的所有记录 - 删除
交易
中的所有记录 - 从
FirstEntity
删除记录
问题是,当我执行第一次删除(FirstEntityTransaction
)时,我没有任何方法可以通过 TransactionID 查找相关事务。有什么方法可以保存这些 ID,然后执行第二次删除吗?
编辑:我修改了帖子以获得更有意义的图表
最佳答案
下面的示例将已删除的实体事务插入到表变量中,该变量随后用于删除事务行。
DECLARE @DeletedMyEntityTransaction table ( TransactionID int );
DELETE dbo.MyEntityTransaction
OUTPUT deleted.TransactionID
INTO @DeletedMyEntityTransaction
WHERE MyEntityID = @MyEntityID;
DELETE dbo.[Transaction]
WHERE TransactionID IN ( SELECT TransactionID
FROM @DeletedMyEntityTransaction );
DELETE dbo.MyEntity
WHERE MyEntityID = @MyEntityID;
关于SQL Server 删除脚本顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30820162/