CASE1:
新しいテーブルの作成中に外部キーを作成する必要がある場合
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
上記のコマンドは、「table1」という名前のテーブルと、「id」(主キー)、「column1」、「table2_id」(table2のid列を参照するtable1の外部キー)という名前の3つの列を持つテーブルを作成します。
DATATYPE 'serial'は、このデータ型を自動生成列として使用する列を作成します。テーブルに値を挿入する場合、この列についてまったく言及する必要はありません。または、値の場所に引用符なしで 'default'を指定できます。
主キー列は常に値「tablename_pkey」を持つテーブルのインデックスに追加されます。
テーブルの作成時に外部キーが追加されると、パターン '(present_table_name)_(foreign_key_id_name)_fkey'でCONSTRAINTが追加されます。
外部キーを追加するときは、列名の横にキーワード「REFERENCES」を入力する必要があります。これは、この列がテーブルを参照することをpostgresに伝え、次に参照の横に参照用のテーブルを指定する必要があるためです。参照されるテーブルの列名。通常、外部キーは主キー列として指定されます。
ケース2:
既存の列の既存のテーブルへの外部キーが必要な場合
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
注:FOREIGN KEYとREFERENCES tabel2の後のブラケット '()'は必須です。そうでない場合、postgresはエラーをスローします。