Как добавить каскад удаления в промежуточную таблицу

Вот как я создал таблицы:

CREATE TABLE TABLE_A(
  id uuid NOT NULL, UNIQUE
  name text
);


CREATE TABLE TABLE_B(
  id uuid NOT NULL, UNIQUE
  name text
);

-- custom realization of many-to-many association
CREATE TABLE TABLE_A_B(
  id uuid NOT NULL, UNIQUE
  a_id uuid REFERENCES TABLE_A(id) ON UPDATE CASCADE,
  B_id uuid REFERENCES TABLE_B(id) ON UPDATE CASCADE
);

Я уже создал таблицы и теперь не могу обновить их, добавив ON DELETE CASCADE. И теперь мне нужно добавить ON DELETE CASCADE в промежуточную таблицу TABLE_A_B. Как это сделать ?(

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете ON DELETE CASCADE:

CREATE TABLE TABLE_A_B(
  id uuid NOT NULL UNIQUE,
  a_id uuid REFERENCES TABLE_A(id) ON UPDATE CASCADE ON DELETE CASCADE,
  B_id uuid REFERENCES TABLE_B(id) ON UPDATE CASCADE ON DELETE CASCADE
);

Вот скрипт db<>, исправляющий некоторые опечатки в вашем коде.

В частности, ссылка внешнего ключа должна быть на первичный ключ. Хотя первичные ключи разрешены для уникального ключа, на самом деле они предназначены для идентификации отдельных строк, и одно из основных применений — ссылки на внешние ключи.

Обновлено:

Если ограничения уже существуют, выполните следующие действия.

Во-первых, получить их имена:

select *
from information_schema.table_constraints
where constraint_type = 'FOREIGN KEY' and table_name = 'table_a_b';

Примечание. Вы можете назначить имена, чтобы пропустить этот шаг.

Затем удалите существующее ограничение внешнего ключа:

alter table table_a_b
    drop constraint table_a_b_a_id_fkey;

Наконец, добавьте новый:

alter table table_a_b
    add constraint fk_table_a_b_a
        foreign key (a_id) references table_a(id)
            on update cascade
            on delete cascade;

Я уже создал его. Теперь я не могу обновить его, добавив каскад удаления

D.Nursultan 13.12.2020 15:14

@Д.Нурсултан . . . Отбросьте существующее ограничение и добавьте новое.

Gordon Linoff 13.12.2020 15:16

можешь, пожалуйста, проиллюстрировать это

D.Nursultan 13.12.2020 15:17

Другие вопросы по теме