我遇到问题了,我解释一下:
我有一个名为 Tipo_Base 的表,其中包含ID nombre_tipo_base
我有一个名为 Tipo_Base_Lista 的表,其中包含ID,id_tipo_base和lista_id
我有一个名为 Modelo_unidad 的表,其中包含ID,nombre_modelo和id_tipo_base
我有一个名为 Modelo_Lista 的表,其中包含ID,id_modelo,id_lista
表 modelo_lista 中的每个 id_lista 必须存在于表 tipo_base_lista 中,然后,当我删除 id_lista 从表 tipo_base_lista 中删除,也必须从表 modelo_lista 中将其删除。
尝试以下操作:
DELETE Tbl_modelo_lista
FROM
Tbl_modelo_lista
INNER JOIN Tbl_modelo_unidad as MU ON MU.id_modelo = Tbl_modelo_lista.id_modelo
INNER JOIN Tbl_tipo_base_lista as TBL ON TBL.id_tipo_base = MU.id_tipo_base
WHERE
TBL.id_lista <> Tbl_modelo_lista.id_lista
答案 0 :(得分:1)
我认为您想要的逻辑更像这样:
DELETE ml
FROM Tbl_modelo_lista ml INNER JOIN
Tbl_modelo_unidad mu
ON mu.id_modelo = ml.id_modelo LEFT JOIN
Tbl_tipo_base_lista tbl
ON tbl.id_tipo_base = mu.id_tipo_base AND
tbl.id_lista = ml.id_lista
WHERE tbl.id_lista IS NULL;
通常,实现此逻辑的方法是级联删除约束。就您而言,我不确定这是否可行。当您需要从参考表向外传播更改时,级联触发器非常有用。他们不会跟踪传入的引用,也不会在没有引用的情况下删除记录。