【发布时间】:2019-11-30 23:11:01
【问题描述】:
我需要你的指导。 我创建了一个脚本来分别从 3 个表中删除。 意思是当我创建脚本时是从 table3 (child) 中删除 然后从 2(子)删除,然后从 table1(父)删除 我在使用 Table3 时遇到问题,因为 table2 对 table2 和 table1 所以在删除 table2 之前我无法删除它 如果我先删除 table2,那么我会丢失用于查找行的参考 delete 然后我从 table3 和 table1 中删除 0。
脚本如下所示
DELETE FROM table3 t3
INNER JOIN table1 t1 ON t3.t1ID = t1.t1ID
INNER JOIN table2 t2 i ON t2.t1ID = t1.t1ID
WHERE t3.t1ID IN(
SELECT DISTINCT t1.t1ID
FROM t2
WHERE (
(t2.t2ID IS NULL AND t1.LastDate <@UpDate )))
上面删除0,因为我删除表2之前删除
DELETE
FROM table2 t2
INNER JOIN table1 t1 on t2.T1ID =t1.t1ID
WHERE t2.t1ID IN(
SELECT DISTINCT t1.T1ID
FROM t2
WHERE (
(t2.t2ID is null and t1.LastDate <@UpDate <@UpDate )))
它也不会从 table1 中删除,因为脚本会查找 table2 中不存在的位置
DELETE
FROM table1 t1
INNER JOIN table2 t2 i ON t2.t1ID = t1.t1ID
WHERE t1.t1ID IN(
SELECT DISTINCT t1.t1ID
FROM t2
WHERE (
(t2.t2 IS NULL ANDt1.LastDate <@UpDate)))
【问题讨论】:
标签: sql sql-server parent-child sql-delete cascade