Pregunta

Estoy escribiendo un programa, en C ++, para acceder a las tablas en MySQL a través del conector MySQL C ++.

Recupero un registro del usuario (a través de GUI o archivo XML).

Aquí están mis preguntas:

  1. ¿Debo buscar la tabla primero para el registro dado? Luego agregar si no existe,

  2. ¿O agregar el registro y dejar que MySQL agregue el registro si es único?

Aquí está mi tabla de ejemplo:

mysql> describe ing_titles;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| ID_Title | int(11)  | NO   | PRI | NULL    |       |
| Title    | char(32) | NO   |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

En el juicio, estoy buscando una solución que permita que mi programa responda rápidamente al usuario.

Durante el desarrollo, tengo pequeñas tablas (menos de 5 registros), pero espero que crezcan cuando lento formalmente la aplicación.

FYI: Estoy usando el conector Visual Studion 2008, C ++, WXWidgets y MySQL C ++ en Windows XP y Vista.

¿Fue útil?

Solución

Marque el campo en cuestión con un UNIQUE restricción y uso INSERT ... ON DUPLICATE KEY UPDATE o INSERT IGNORE.

El primero actualizará los registros si ya existe, el segundo simplemente no hará nada.

Buscar primero la tabla no es eficiente, ya que requiere dos tripas redondas al servidor: el primero en buscar, el segundo para insertar (o actualizar).

Las sintaxis anteriores hacen lo mismo en una oración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top