Een beperking aan een kolom toevoegen Het moet eerst in de tabel voorkomen er is geen commando in Postgresql dat u kunt gebruiken om de kolom toe te voegen en tegelijkertijd de beperking toe te voegen. Het moeten twee aparte commando's zijn. U kunt dit doen met de volgende opdrachten:
Doe eerst als:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Ik gebruik integer
als type hier, maar het moet hetzelfde type zijn als de id
kolom van de auth_user
tafel.
Dan voeg je de beperking toe
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
De ADD CONSTRAINT fk_someName
een deel van dit commando is naamgeving uw beperking, dus als u deze later moet documenteren met een tool die uw model maakt, heeft u een benoemde beperking in plaats van een willekeurige naam.
Het dient ook voor beheerdersdoeleinden, zodat een DBA weet dat de beperking uit die tabel komt.
Meestal noemen we het met een hint over waar het vandaan komt tot waar het naar jouw zaak verwijst, het zou fk_links_chatpicmessage_auth_user
zijn dus iedereen die deze naam ziet, weet precies wat deze beperking is zonder ingewikkelde zoekopdrachten op de INFORMATION_SCHEMA uit te voeren om erachter te komen.
BEWERKEN
Zoals vermeld in het antwoord van @btubbs, kunt u in één opdracht een kolom met een beperking toevoegen. Vind ik leuk:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);