背景
テーブル定義書をもとに、各テーブルを作成する際、FKの製薬名が未定の状態だった。制約名を省略して以下のようなDDLを流した場合、制約名はどうなるのだろう、と思い調べてみた。
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
結論
外部キー制約(FK)を定義する際、制約名を省略すると、デフォルトの制約名が自動的に生成される。
- デフォルト制約名:
<テーブル名>_<カラム名>_fk
今回の場合は、orders_user_id_fk
となる。
【余談】 制約名を指定してテーブルを作成する場合
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(user_id)
);