Подтвердить что ты не робот

Ограничение Postgresql

Я не могу понять, что это правильно, я пытаюсь изменить поле, чтобы быть внешним ключом, с каскадным удалением... что я делаю неправильно?

ALTER TABLE my_table 
ADD CONSTRAINT $4 
FOREIGN KEY my_field 
REFERENCES my_foreign_table 
ON DELETE CASCADE;
4b9b3361

Ответ 1

Это поможет, если вы разместите сообщение об ошибке. Но я думаю, что вам просто не хватает скобки:

ALTER TABLE my_table 
ADD CONSTRAINT my_fk 
FOREIGN KEY (my_field) 
REFERENCES my_foreign_table 
ON DELETE CASCADE;

Ответ 2

Просто гадать: не следует ли добавлять внешний ключ вместо ограничения?

ALTER TABLE my_table ADD FOREIGN KEY (my_field) REFERENCES my_foreign_table;

Ссылка Postgresql

Ответ 3

Я все еще как-то пропустил ответ с явно указанным чужим столбцом (foreign_field):

ALTER TABLE my_table
ADD CONSTRAINT my_fk
FOREIGN KEY (my_field)
REFERENCES my_foreign_table (foreign_field)
ON DELETE CASCADE;

Ответ 4

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

-- add column to table 
ALTER TABLE schema.table ADD COLUMN my_column type;  

-- add constraint to column 
ALTER TABLE schema.table ADD CONSTRAINT fk_name FOREIGN KEY (column)
REFERENCES schema.table (column) MATCH SIMPLE 
ON UPDATE NO ACTION ON DELETE NO ACTION;