gpt4 book ai didi

postgresql - Postgres 级联删除不起作用

转载 作者:行者123 更新时间:2023-11-29 12:08:46 27 4
gpt4 key购买 nike

我有两个表:

CREATE TABLE cars(
id SERIAL PRIMARY KEY,
brand VARCHAR(100),
model VARCHAR(100),
transmission VARCHAR(50),
engine REAL,
year INTEGER
);

CREATE TABLE ads(
id SERIAL PRIMARY KEY,
description VARCHAR(500),
price INTEGER,
sold BOOLEAN,
create_date TIMESTAMP,
car_id INTEGER REFERENCES cars(id) ON DELETE CASCADE
);

当我删除一些广告时

delete from ads where id=1;

它工作正常 - 并删除,但相应的汽车不会删除。为什么?我没有在网上找到正确的答案。感谢预期的帮助。

最佳答案

delete cascade 以相反的方式工作 - 当引用列的值被删除时,它级联到引用,清除孤儿。另一种方式没有多大意义 - 如果您不允许没有引用广告的汽车,您甚至不能插入第一行,同时 FK on ads.car_id 将不允许在您添加汽车之前插入。

由此得出的结论是,如果 select count(1) = 0 from cars where id = OLD.car_id 然后delete from cars where id = OLD.car_id,这样你就可以插入没有广告的汽车,但一旦出现广告,不要保留没有广告的汽车。

关于postgresql - Postgres 级联删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com