初めてのSQL【読書記録2】

ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

しようとしたら

ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'fk_person_id' of table 'bank.favorite_food'

どうもfavorite_foodテーブルの外部キーとしてperson_idを使用しているため,変更が出来ないということであった.そのためfavorite_foodの外部キーを削除したのちにperson_idAUTO_INCREMENTに変更.その後外部キーを設定し直すという手順で修正を行う.

-> LOCK TABLES favorite_food WRITE, person WRITE;

-> alter table favorite_food DROP FOREIGN KEY fk_person_id, modify person_id smallint unsigned;

-> alter table person modify person_id smallint unsigned auto_increment;

-> alter table favorite_food add CONSTRAINT fk_person_id FOREIGN KEY (person_id) REFERENCES person(person_id);

-> UNLOCK TABLES;

所感

MySQL,困った時に公式のReference Manual見ようと思ったのだけど見方がよくわからなくて,結局解決するときに2次情報源を頼ることになってしまった.

2次情報源はいつもあたってるから探すことは別にいいのだけど,1次情報源にあたらないで2次情報源を探しにいくのは抵抗あるのでなんとかしたい

あとMySQLのバージョンは5.6系を使ってるのだけど,5.7使ったほうがいいのかな...

参考URL

stackoverflow.com

qiita.com