Firebird: INSERT con ON DUPLICATE KEY UPDATE
Pregunta de PC Control | 27/10/2023 a las 21:04
Me gustaría insertar algunos datos en una base de datos de Firebird o, si el ID correspondiente ya existe, actualizar el registro con ese ID. Me gustaría hacer esto dentro de una consulta para no recibir ningún mensaje de error y no tener que verificar primero si ya hay un ID en la tabla.
Para ello, MySQL cuenta con el comando "INSERT ... ON DUPLICATE KEY UPDATE", el cual se construye de la siguiente manera:
INSERT INTO tab (id, val) VALUES (10, 1) ON DUPLICATE KEY UPDATE val = val + 1;
Esto inserta un registro con id = 10 y val = 1 en la tabla "tab", si el id = 10 aún no existe. Sin embargo, si este ID existe, el valor de val de esta fila se incrementa en 1.
Eso es exactamente lo que me gustaría hacer ahora también con Firebird. Desafortunadamente, Firebird no parece entender esta sintaxis y siempre me da sólo un mensaje de error. ¿Qué puedo hacer? ¿Esta opción no está disponible en Firebird?
Temas Relacionados
MySQL: Saltos de Línea en MySQL
Consejo | 0 Comentarios
MySQL/PHP: Cómo recuperar el último INSERT ID
Información | 0 Comentarios
Firebird: SELECT con LIMIT
Pregunta | 1 Respuesta
Delphi/Lazarus: ¿Está presionada la tecla ALT, SHIFT o CTRL?
Tutorial | 0 Comentarios
Delphi/Lazarus: Seleccionar todo con CTRL+A en ListView
Consejo | 0 Comentarios
Delphi: Las Teclas de Función como F1, F2 y F3 no funcionan en el evento FormKeyDown
Pregunta | 4 Respuestas
MySQL: Agregar o Insertar un Número Aleatorio
Consejo | 0 Comentarios
Aviso Importante
Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.
Participar
Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.
Incluso en Firebird puede realizar una INSERT "ON DUPLICATE KEY UPDATE". Sin embargo, en Firebird la sintaxis es un poco diferente. En lugar de la sintaxis de MySQL, debe escribir "UPDATE OR INSERT".
Su consulta desde arriba se vería así en Firebird:
La consulta "UPDATE OR INSERT" de Firebird utiliza automáticamente la(s) columna(s) existente(s) con PRIMARY KEY. Si no tiene una columna PRIMARY KEY o si desea usar otras columnas para la coincidencia, puede usar la palabra clave MATCHING al final de su consulta:
Después de MATCHING en el paréntesis, usted define qué columnas se utilizarán para la coincidencia. En este ejemplo, tomé nuevamente la columna "id" para que corresponda a su ejemplo.
Puede encontrar más información sobre este tema en las preguntas frecuentes de Firebird.
28/10/2023 a las 10:23