DURUM1:
Yeni bir tablo oluştururken yabancı anahtar oluşturmanız gerekiyorsa
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
Yukarıdaki komutlar 'table1' adında bir tablo ve 'id' (Birincil anahtar), 'column1', 'table2_id' (table2'nin id sütununa gönderme yapan table1'in yabancı anahtarı) adında üç sütun oluşturur.
DATATYPE 'seri', bu veri türünü otomatik olarak oluşturulan bir sütun olarak kullanan sütunu yapar, tabloya değerler eklerken bu sütundan hiç bahsetmenize gerek yoktur ya da değer yerinde tırnak işaretleri olmadan 'varsayılan' verebilirsiniz.
Tablonun dizinine her zaman 'tablename_pkey' değerine sahip birincil anahtar sütunu eklenir.
Tablo oluşturma zamanında yabancı anahtar eklenirse, '(present_table_name) _ (foreign_key_id_name) _fkey' deseniyle bir CONSTRAINT eklenir.
Bir yabancı anahtar eklerken, sütun adının yanına 'REFERANSLAR' anahtar kelimesini girmeliyiz çünkü postgres'e bu sütunun bir tabloya atıfta bulunduğunu ve referansların yanında referans için tabloyu vermeliyiz ve köşeli parantez içinde başvurulan tablonun sütun adı, genellikle yabancı anahtarlar birincil anahtar sütunları olarak verilir.
DURUM 2:
Mevcut sütundaki mevcut bir tablonun yabancı anahtarını istiyorsanız
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
NOT: YABANCI ANAHTAR ve REFERANSLAR tabel2'den sonra parantez '()' zorunludur, aksi takdirde postgres hata verir.