So fügen Sie einer Spalte eine Einschränkung hinzu Es muss zuerst in der Tabelle vorhanden sein Es gibt keinen Befehl in Postgresql, den Sie verwenden können, um die Spalte und gleichzeitig die Einschränkung hinzuzufügen. Es müssen zwei separate Befehle sein. Sie können dies mit den folgenden Befehlen tun:
Gehen Sie zuerst wie folgt vor:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Ich verwende integer
als Typ hier, aber es sollte derselbe Typ wie id
sein Spalte des auth_user
Tabelle.
Dann fügen Sie die Einschränkung hinzu
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
Der ADD CONSTRAINT fk_someName
Teil dieses Befehls ist die Benennung Ihre Einschränkung, wenn Sie sie also später mit einem Werkzeug dokumentieren müssen, das Ihr Modell erstellt, haben Sie eine benannte Einschränkung anstelle eines zufälligen Namens.
Es dient auch Administratorzwecken, damit ein DBA weiß, dass die Einschränkung aus dieser Tabelle stammt.
Normalerweise benennen wir es mit einem Hinweis darauf, woher es kommt, worauf es verweist. In Ihrem Fall wäre es fk_links_chatpicmessage_auth_user
Jeder, der diesen Namen sieht, wird also genau wissen, was diese Einschränkung ist, ohne eine komplexe Abfrage des INFORMATION_SCHEMAs durchführen zu müssen, um dies herauszufinden.
BEARBEITEN
Wie in der Antwort von @btubbs erwähnt, können Sie tatsächlich eine Spalte mit einer Einschränkung in einem Befehl hinzufügen. So:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);