スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MySQL Reference Key

今日もMySQLをいじってみた。
なぜか、参照制約が効いていない。create文でエラーにはならない。
いろいろ調べているうちに、テーブル生成時にtype=innodbを指定しないといけないことがわかった。一度createしてから、alter文でtypeを変えてもなぜか反映されない。

これで参照制約が有効になったはいいが、困ったことがあった。同一のテーブルへの参照制約をはっている場合、truncateができない。参照制約ではねられてしまう。deleteはむろんだめ。

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

JUnitでtruncateとinsertを最初に行って初期設定をするのだが、これができない。制約を無効にしようとしたり、削除しようとしたのだが、いまいちやり方がわからない。
仕方がないので、一文一文逆順に削除するすることにした。ふーっ。
試しにOracleで同じことをやってみたが、当然のごとくあっさりtruncateされて消えた。

あと、auto_incrementもなぜか0からスタートできない。1から始まってしまう。0をadmin用のレコードにしたかったが、うーん、プライマリーキー自体に意味を持たせるのがよくなかったか。

なんちゅう糞DBかと思う。これはただ単に私が知らないだけ?
しかし、下手にOracleに慣れてしまっていると、それと同じことができるだろうなんて期待してしまう。やっぱりOracleは優れていると言いたくなってしまう。
うーん、どっちが悪いんだろう。


関連記事
スポンサーサイト

コメント

非公開コメント

結局

alter table hoge type=myisam;

とやったらtruncateできて、そしてその後innodbにすることで

何とかできた。無駄だなあ。

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。