For at tilføje en begrænsning til en kolonne Den skal eksistere først i tabellen der er ingen kommando i Postgresql, som du kan bruge, som tilføjer kolonnen og tilføjer begrænsningen på samme tid. Det skal være to separate kommandoer. Du kan gøre det ved at bruge følgende kommandoer:
Gør først som:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Jeg bruger integer
som type her, men det skal være den samme type id
kolonne i auth_user
tabel.
Så tilføjer du begrænsningen
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
en del af denne kommando er navngivning din begrænsning, så hvis du senere har brug for at dokumentere det med et eller andet værktøj, der skaber din model, vil du have en navngivet begrænsning i stedet for et tilfældigt navn.
Det tjener også administratorens formål, så en DBA ved, at begrænsningen er fra den tabel.
Normalt navngiver vi det med et tip om, hvor det kom fra, til hvor det refererer til din sag, det ville være fk_links_chatpicmessage_auth_user
så enhver, der ser dette navn, ved nøjagtigt, hvad denne begrænsning er uden at foretage en kompleks forespørgsel på INFORMATION_SCHEMA for at finde ud af det.
REDIGER
Som nævnt af @btubbs' svar kan du faktisk tilføje en kolonne med en begrænsning i en kommando. Sådan:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);