Untuk menambahkan kendala ke kolom Harus ada terlebih dahulu ke dalam tabel tidak ada perintah di Postgresql yang dapat Anda gunakan yang akan menambahkan kolom dan menambahkan kendala pada saat yang sama. Itu harus dua perintah yang terpisah. Anda dapat melakukannya dengan menggunakan perintah berikut:
Pertama lakukan sebagai:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Saya menggunakan integer
sebagai ketik di sini tetapi harus sama dengan jenis id
kolom auth_user
tabel.
Kemudian Anda menambahkan batasan
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
bagian dari perintah ini adalah menamai kendala Anda jadi jika Anda nanti perlu mendokumentasikannya dengan beberapa alat yang membuat model Anda, Anda akan memiliki kendala bernama alih-alih nama acak.
Juga berfungsi untuk tujuan administrator sehingga DBA tahu bahwa kendala berasal dari tabel itu.
Biasanya kami menamakannya dengan beberapa petunjuk tentang dari mana asalnya ke mana referensi pada kasus Anda adalah fk_links_chatpicmessage_auth_user
jadi siapa pun yang melihat nama ini akan tahu persis batasan ini tanpa melakukan kueri rumit di INFORMATION_SCHEMA untuk mengetahuinya.
EDIT
Seperti yang disebutkan oleh jawaban @ btubbs, Anda sebenarnya dapat menambahkan kolom dengan batasan dalam satu perintah. Seperti ini:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);