2009-07-28 9 views
3

私はON DUPLICATE KEY構文を使用する方法を誤解している可能性があります。重複しないキーを使用しないMySQLのINSERT/UPDATE

私は、別のテーブル(予約)に関連付けられたメタデータを表すテーブルを持っていますが、予約テーブル内の異なる行には、他のテーブルに関連付けられた特定のメタデータがある場合とない場合があります。

予約メタテーブルには、meta_id(プライマリキー)、booking_id、キー、および値の各列があります。

私が理解しているように、重複キーを使用するには、このケースで何がmeta_idであるかを知る必要があります。これはしばしばキーと値のペアをテーブルにプッシュしようとしています。その特定のキーが存在する場合はそのキーが置き換えられ、そうでなければそのキーが挿入されます。

現時点では、行を選択しようとする別のクエリがあります。見つかった場合は更新し、そうでない場合はINSERTします。

ON DUPLICATE KEYを使用せずに1つのクエリで挿入/更新を行う方法はありますか?またはこのトリックを逃したことがありますか?

答えて

6

可能であれば、meta_id列を完全に削除し、booking_idkeyを合成プライマリキーに変換します。それはテーブルのスペースを節約し、ON DUPLICATE KEYの使用を許可し、一般的にはよりクリーンになります。

+1

ありがとう、それは完璧ですが、私は理由はわかりませんが、私は自分のメタアイドが必要なので、その反射はどこにも使われませんでした! – Duncan

関連する問題