Не могу удалить таблицы, связанные ключом
Есть таблички:
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