Почему мое каскадное удаление не работает в PostgreSQL? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь настроить каскадное удаление в 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 все еще там. Может кто-нибудь сказать мне, что мне не хватает или почему это не работает?

1 Ответ

2 голосов
/ 26 февраля 2020

Внешний ключ on delete cascade работает противоположным образом. Т.е. если вы удаляете пользователя, его сообщения также удаляются.

...