データベースの設計をするときに、データの正規化、整合性を担保したいという気持ちはわからなくもない。
こっちのテーブルAにある値は別のテーブルBに存在するものじゃなきゃいけない。。。みたいなの
設計者の気持ちもわからなくはないが、でも、そういったことはシステムで塞いでおいたほうが良い。そんな定義をデータベースにされ、雁字搦めにされたのではいろいろと足枷になり、やりにくくてしょうがないこともある。
システムのバージョンアップに弊害がでることもあるし、 テストにじゃまだからこのデータは消したい!と思っても消せない。
えっ?そんな~
FOREIGN_KEYで削除できない!?
というときのマジック
SET FOREIGN_KEY_CHECKS=0;
これで心置きなくDELETEしよう
ついでにUPDATEするときのこれも
SET SQL_SAFE_UPDATES = 0;
データ変更もできないと仕事が止まるしね