Щоб додати обмеження в стовпець, воно повинно існувати спочатку в таблиці. У Postgresql немає команди, яку ви можете використовувати для одночасного додавання стовпця та обмеження. Це повинні бути дві окремі команди.Ви можете зробити це за допомогою наступних команд:
Спочатку зробіть так:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Я використовую integer
тут як тип, але це повинен бути той самий тип id
стовпця auth_user
таблиці.
Потім ви додаєте обмеження
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
Частина цієї команди іменування ваше обмеження , так що якщо ви останній на необхідності документувати його з деяким інструментом , які створюють модель ви будете мати обмеження по імені , а не випадковим ім'ям.
Крім того, він служить для адміністраторів, тому DBA знає, що обмеження є з цієї таблиці.
Зазвичай ми називаємо це з деяким натяком на те, звідки воно прийшло і де воно посилається на вашу справу fk_links_chatpicmessage_auth_user
так що будь-хто, хто бачить це ім’я, точно знатиме, що це за обмеження, не роблячи складного запиту на INFORMATION_SCHEMA для з’ясування.
РЕДАГУВАТИ
Як згадується у відповіді @ btubbs, ви можете фактично додати стовпець з обмеженням в одній команді. Подобається так:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);