CASE1:
Nếu bạn cần tạo khóa ngoại trong khi tạo bảng mới
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
Các lệnh trên sẽ tạo một bảng có tên 'bảng1' và ba cột có tên 'id' (Khóa chính), 'cột1', 'bảng2_id' (khóa ngoài của bảng1 tham chiếu cột id của bảng2).
DATATYPE 'serial' sẽ tạo cột sử dụng kiểu dữ liệu này làm cột được tạo tự động, khi chèn các giá trị vào bảng bạn không cần đề cập đến cột này, hoặc bạn có thể đưa ra 'mặc định' mà không có dấu ngoặc kép ở vị trí giá trị.
Một cột khóa chính luôn được thêm vào chỉ mục của bảng với giá trị 'tablename_pkey'.
Nếu khóa ngoại được thêm vào lúc tạo bảng, CONSTRAINT được thêm bằng mẫu '(Present_table_name) _ (Foreign_key_id_name) _fkey'.
Khi thêm khóa ngoại, chúng ta phải nhập từ khóa 'TÀI LIỆU THAM KHẢO' bên cạnh tên cột vì chúng ta muốn nói với các postgres rằng cột này tham chiếu một bảng và sau đó bên cạnh các tham chiếu, chúng ta phải đưa ra bảng để tham khảo và trong ngoặc cho tên cột của bảng được tham chiếu, thông thường các khóa ngoại được cung cấp dưới dạng các cột khóa chính.
TRƯỜNG HỢP 2:
Nếu bạn muốn khóa ngoại vào bảng hiện có trên cột hiện có
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
LƯU Ý: ngoặc '()' sau tab NGOẠI TỆ và TÀI LIỆU THAM KHẢO tabel2 là bắt buộc nếu không các postgres sẽ ném lỗi.