首页 > 解决方案 > 为什么我的级联删除在 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我创建的记录仍然存在。有人可以告诉我我缺少什么或为什么这不起作用吗?

标签: sqlpostgresqlforeign-keyscascading-deletes

解决方案


on delete cascade键的工作方式相反。即,如果您删除用户,其帖子也会被删除。


推荐阅读