Chcete-li přidat omezení do sloupce Musí nejprve existovat v tabulce v Postgresql není žádný příkaz, který byste mohli použít, který přidá sloupec a zároveň přidá omezení. Musí to být dva samostatné příkazy. Můžete to udělat pomocí následujících příkazů:
Nejprve postupujte takto:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Používám integer
jako typ zde, ale měl by to být stejný typ id
sloupec auth_user
tabulka.
Poté přidáte omezení
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
součástí tohoto příkazu je pojmenování vaše omezení, takže pokud jej budete potřebovat zdokumentovat pomocí nějakého nástroje, který vytvoří váš model, budete mít místo náhodného názvu pojmenované omezení.
Slouží také pro účely administrátorů, aby DBA věděl, že omezení pochází z této tabulky.
Obvykle jej pojmenujeme s nějakou nápovědou o tom, odkud pochází, kam odkazuje na váš případ, bylo by to fk_links_chatpicmessage_auth_user
takže každý, kdo uvidí tento název, bude přesně vědět, co je toto omezení, aniž by to zjistil složitým dotazem na INFORMAČNÍ SCHÉMA.
UPRAVIT
Jak je uvedeno v odpovědi @btubbs, můžete skutečně přidat sloupec s omezením v jednom příkazu. Asi takhle:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);