За да добавите ограничение към колона Първо трябва да съществува в таблицата няма команда в 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);