So fügen Sie einer Spalte eine Einschränkung hinzu Es muss zuerst in der Tabelle vorhanden sein. In Postgresql gibt es keinen Befehl, mit dem Sie die Spalte hinzufügen und gleichzeitig die Einschränkung hinzufügen können. Es müssen zwei separate Befehle sein. Sie können dies mit folgenden Befehlen tun:
Machen Sie zuerst Folgendes:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Ich verwende hier integer
als Typ, aber es sollte der gleiche Typ der id
Spalte der auth_user
Tabelle sein.
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 benennt Ihre Einschränkung. Wenn Sie diese also mit einem Tool dokumentieren müssen, das Ihr Modell erstellt, haben Sie eine benannte Einschränkung anstelle eines zufälligen Namens.
Es dient auch Administratoren, sodass ein DBA weiß, dass die Einschränkung aus dieser Tabelle stammt.
Normalerweise benennen wir es mit einem Hinweis darauf, woher es stammt und wo es auf Ihren Fall verweist. fk_links_chatpicmessage_auth_user
Jeder, der diesen Namen sieht, weiß genau, was diese Einschränkung ist, ohne eine komplexe Abfrage in INFORMATION_SCHEMA durchzuführen, um dies herauszufinden.
BEARBEITEN
Wie in der Antwort von @ btubbs erwähnt, können Sie in einem Befehl tatsächlich eine Spalte mit einer Einschränkung hinzufügen. Wie so:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);