Postgresql ограничение - PullRequest
       4

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

44 голосов
/ 09 июня 2010

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

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

Ответы [ 4 ]

81 голосов
/ 09 июня 2010

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

ALTER TABLE my_table 
ADD CONSTRAINT my_fk 
FOREIGN KEY (my_field) 
REFERENCES my_foreign_table 
ON DELETE CASCADE;
13 голосов
/ 09 июня 2010

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

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

Ссылка Postgresql

12 голосов
/ 26 марта 2016

Мне все еще не хватает здесь ответа с явно заданным внешним столбцом (foreign_field):

ALTER TABLE my_table
ADD CONSTRAINT my_fk
FOREIGN KEY (my_field)
REFERENCES my_foreign_table (foreign_field)
ON DELETE CASCADE;
1 голос
/ 25 апреля 2017

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

-- 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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...