2009-07-28 3 views
3

J'ai peut-être mal compris comment utiliser la syntaxe ON DUPLICATE KEY, ou bien ma structure de base de données a besoin d'un peu de travail mais c'est parti.MySQL INSERT/UPDATE sans la clé ON DUPLICATE

J'ai une table (réservations-méta) qui représente les métadonnées associées à une autre table (réservations), différentes lignes dans la table des réservations peuvent ou non avoir des métadonnées spécifiques associées dans l'autre table.

La table bookings-meta contient les colonnes suivantes: meta_id (clé primaire), booking_id, key et value. D'après ma compréhension, pour utiliser la clé DUPLICATE J'ai besoin de savoir ce que dans ce cas est le meta_id, souvent ce n'est pas le cas, je suis en train de simplement pousser une clé, paire de valeurs à la table en utilisant le booking_id, donc si la clé particulière existe alors son remplacé sinon son inséré.

Pour le moment j'ai une requête séparée pour essayer de sélectionner la ligne, si elle se trouve alors je mets à jour, sinon c'est un INSERT.

Y a-t-il une façon de faire une insertion/mise à jour dans une requête sans utiliser ON DUPLICATE KEY ou ai-je manqué un truc avec celui-ci?

Répondre

6

Si possible, je laisser tomber la colonne meta_id entièrement et tourner booking_id et key dans une clé primaire composite. Cela économisera de l'espace dans votre table, permettra l'utilisation de ON DUPLICATE KEY, et sera plus propre en général.

+1

Merci, c'est parfait, je ne sais pas pourquoi mais j'ai continué à me dire que j'avais besoin de cette meta_id, à la réflexion, elle n'est utilisée nulle part! – Duncan

Questions connexes