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, der die Spalte hinzufügt und die Einschränkung gleichzeitig hinzufügt. Es müssen zwei separate Befehle sein. Sie können es folgende Befehle:
Erstes tun, wie:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Ich benutze integer
als Typ hier, aber es sollte die gleiche Art der id
Spalte der auth_user
Tabelle sein.
Dann fügen Sie die Einschränkung
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 Ihre Constraint Benennung ist so, wenn Sie diese auf Notwendigkeit, es mit etwas Werkzeug zu dokumentieren, dass Ihr Modell schaffen Sie eine benannte Integritäts haben anstelle eines zufälligen Namens.
Auch es dient zu Zwecken der Administratoren, so dass ein DBA wissen, dass Constraint aus dieser Tabelle ist.
Normalerweise nennen wir es mit einem Hinweis darüber, woher es kam, wo es auf Ihrem Fall verweist fk_links_chatpicmessage_auth_user
so dass jeder, der diesen Namen sieht, genau wissen, was diese Einschränkung ist, ohne komplexe Abfrage auf der INFORMATION_SCHEMA zu finden .
EDIT
Wie @ btubbs der genannten beantworten Sie tatsächlich eine Spalte mit einer Einschränkung in einem Befehl hinzufügen können. Wie so:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);
Hallo @HassanBaig Ich werde meinen Beitrag bearbeiten, um jeden Teil zu erklären. –
Ich verstehe. +1 für die Erklärung. Lassen Sie mich es versuchen –
So versuchte ich 'ALTER TABLE links-_chatpicmessage ADD CONSTRAINT fk_links_chatpicmessage_auth_user FREMDSCHLÜSSEL (Absender) REFERENZEN auth_user (id);' aber ich habe immer noch 'Spalte" Absender "in Fremdschlüssel-Einschränkung referenziert nicht existiert'. Ich vermisse etwas Grundlegendes, nehme ich an? –