mysql の unique 制約 について質問です。

emailカラムにunique をつけました。'hoge@hoge.com'が入っている行を削除しました。
そのあとで、INSERT文で、emailカラムに同じ'hoge@hoge.com'を挿入しようとすると、duplicate errorになります。 なぜinsert できないのでしょうか。
primary key は別のカラムです。
alter table drop index でunique 制約を削除すると、同じinsert文を実行するとエラーになりません。
DELETEしていてテーブルにはないのに、まだ重複エラーになるのはなぜでしょうか。そうゆうものでしょうか。またこれを回避するにはどうすればいいのでしょうか。
on duplicate key update でなく、新規にレコードを追加したいのです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/02/18 17:15:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:chuken_kenkou No.1

回答回数722ベストアンサー獲得回数54

ポイント60pt

MySQLの質問をする場合は、バージョンを明記してください。

  • MySQL 4.0以前・・・一部のジョイン、union、一時表などは実装済
  • MySQL 4.1・・・ジョインの拡張、サブクエリ、unicodeなどの実装、一部の仕様変更
  • MySQL 5.0・・・ビュー、ストアドプロシジャ、トリガなどの実装

すぐに思いつくだけでも、上記のような機能拡張と一部の仕様変更があります。


実際の表定義、インデクス定義と、格納データの例を提示できませんか?

また、使用しているテーブル型(MyISAM、InnoDBなど)は、何でしょうか?

MyISAMを使っていて、何らかの要因で破損している場合などでは、重複エラーとして顕在化する場合もあるようです。


http://q.hatena.ne.jp/だみー

id:cyndy

回答ありがとうございます。

Mysql 5.0.45 です。MyISAMを使っていると思います。

いま、一度DROPしたUNIQUE制約を再度追加してみると、問題なくINSERTできました。

一体なんだったのかよくわかりませんが。。。

とりあえずこれでよしとしておきます。次回からバージョンも明記するので、また困ったら助けてください。

2009/02/18 17:15:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません