我有一个层次结构:
CREATE TABLE thing (
id serial NOT NULL,
CONSTRAINT thing_pkey PRIMARY KEY (id)
)
CREATE TABLE thingthing (
part integer NOT NULL,
cont integer NOT NULL,
CONSTRAINT thingthing_part_fkey FOREIGN KEY (part) REFERENCES thing (id),
CONSTRAINT thingthing_cont_fkey FOREIGN KEY (cont) REFERENCES thing (id)
)
我编写了一个查询,它断开一个事物与另一个事物的连接,如果它不再与任何其他事物连接,也应该删除它。
WITH cte AS (
DELETE FROM thingthing
WHERE part = $1 AND cont = $2
)
DELETE FROM thing
WHERE id = $1 AND id NOT IN (SELECT part FROM thingthing)
问题是第二个
DELETE
从来没有跑过,结果我在
thing
不与其他表连接的表。
我的问题是为什么第一次
删除
已从中删除最后一条记录
thingthing
哪里
part
有
$1
作为价值。在这种情况下,我希望
id NOT IN (SELECT part FROM thingthing)
说实话,但事实并非如此。