【发布时间】:2019-05-30 21:30:23
【问题描述】:
我想加入两个表并从中删除。
表1:
|ID| DATA|
表2:
|ID | ID_TAB1|
查询如下所示:
delete from table2
using table2 as t2 left join table1 as t1
on t2.ID_TAB1=t1.ID
where t1.DATA='xxx';
问题是还有第三张表:
表3:
|ID|ID_TAB2|
当我运行我的语句时它失败了
表 table2 的更新或删除违反了表 table3 的外键约束
我确定 table3 中没有数据连接到带有t1.DATA='xxx' 的行,那么为什么会出现此错误?我的查询不正确吗?
【问题讨论】:
-
先尝试删除外键约束,然后运行delete语句
-
但我需要那里的约束。另外我有一个充满数据的大数据库,我现在不想重建它。
-
当我只删除没有连接的单行时,它可以工作并且约束不是问题。
-
这个错误听起来像是第三个表指向一个或多个正在被删除的记录。你确定不是这样吗?
-
是的,我确定。第三个表中没有记录为真 t1.DATA='xxx'
标签: sql postgresql left-join sql-delete