Не могу удалить таблицы, связанные ключом

Есть таблички:

create table "user" (
    id serial not null constraint account_pkey primary key,
    email text not null,
    password text not null,
);

create table user_role (
    user_id integer not null constraint account_role_account_id_fkey references "user",
    role_id integer not null,
    created_at timestamp(0) default timezone('UTC'::text, now()) not null,
    constraint account_role_pkey primary key (user_id, role_id)
);

Хочу удалить юзера. Делаю так:

DELETE FROM "user" CASCADE;

Получаю

update or delete on table "user" violates foreign key constraint "account_role_account_id_fkey" on table "user_role"

В чём причина?


Ответы (1 шт):

Автор решения: Serj1c

CASCADE используется при создании FOREIGN KEY, чтобы при удалении или изменении инфы в материнской таблице изменения учитывались и в дочерней. Если вы не сделали этого заранее, то сейчас скорее всего надо дропнуть текущий foreign key и создать новый, примерно таким образом:

1.

ALTER TABLE "table"
DROP CONSTRAINT "constraint"
ALTER TABLE "table"
ADD CONSTRAINT "constraint"
FOREIGN KEY ("column name") REFERENCES "table2"("column name") ON DELETE CASCADE
→ Ссылка