为什么我的级联删除在PostgreSQL中不起作用?



我试图在PostgreSQL中配置级联删除,并创建了以下两个表:

CREATE TABLE "public"."User" (
id SERIAL PRIMARY KEY,
name TEXT
);
CREATE TABLE "public"."Post" (
id SERIAL PRIMARY KEY,
title TEXT,
author INTEGER,
FOREIGN KEY (author) REFERENCES "public"."User" (id) ON DELETE CASCADE
);

现在,在用创建了两个相关记录之后

INSERT INTO "public"."User"("name") VALUES('Alice') RETURNING "id", "name";
INSERT INTO "public"."AnotherPost"("title", "author") VALUES('Hello World', 1) RETURNING "id", "title", "author";

我希望在删除Post记录时,相应的User记录会被删除。

DELETE FROM "public"."Post" WHERE "id"=1;

但是,我创建的User记录仍然存在。有人能告诉我我缺了什么吗?或者为什么这不起作用?

on delete cascade外键的工作方式与此相反。也就是说,如果你删除了一个用户,它的帖子也会被删除。

最新更新