LoginSignup
30
18

More than 5 years have passed since last update.

名前を付けてForeignKeyを作成(MySQL)

Last updated at Posted at 2014-01-10

WEBに転がってる情報が名前つけないで作成するのばかりだった

FOREIGN KEYを作成するブログを検索すると、名前を付けて作成するとったエントリーが見当たらない。
ほとんどは以下の様なクエリが書いてある。

ALTER TABLE `child_table`
    ADD FOREIGN KEY `parent_id` REFERENCES `parent_table` (`parent_id`)

こうやってFOREIGN KEYを作成すると、作成したFOREIGN KEYはシステムが勝手に名前を付けてくれる。

名前を付けてやる

INDEXの作成時にINDEXに名前を付けられるように、FOREIGN KEYにも名前を付けて作成することが出来る。
CONSTRAINT [foreign key name]オプションを付けてあげればいい。

CREATE_TABLE時
CREATE TABLE `child_table` (
  `child_id` INT NOT NULL,
  `parent_id` INT NOT NULL,
  PRIMARY KEY (`child_id`),
  INDEX `idx_parent_id` (`parent_id`),
  CONSTRAINT `fkey_parent_table_parent_id` FOREIGN KEY (`parent_id`) REFERENCES  `parent_table` (`parent_id`)
)
ENGINE=InnoDB;
ALTER_TABLE時
ALTER TABLE `child_table`
    ADD CONSTRAINT `fkey_parent_table_parent_id` FOREIGN KEY `parent_id` REFERENCES `parent_table` (`parent_id`)

何故名前をつけるのか?

ちょっとFOREIGN KEYを削除したいと思った時に、、わざわざ名前を調べなくても削除出来るので便利なんです。

30
18
1

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
30
18