1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MySQL】テーブル作成時に外部キーの制約名を省略すると、、

Posted at

背景

テーブル定義書をもとに、各テーブルを作成する際、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)
);
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?