Tengo una tabla con columnas record_id
(auto inc), sender
, sent_time
y status
.¿Cómo INSERTAR un registro o ACTUALIZAR si ya existe?
En caso de que no haya ningún registro de un remitente en particular, por ejemplo "sender1", tengo que INSERTAR un nuevo registro, de lo contrario, tendré que ACTUALIZAR el registro existente que pertenece a "usuario1".
Así que si no hay ningún registro que ya está almacenada, me ejecutar
# record_id is AUTO_INCREMENT field
INSERT INTO messages (sender, sent_time, status)
VALUES (@sender, time, @status)
de lo contrario habría ejecutar instrucción UPDATE.
De todos modos ... ¿alguien sabe cómo combinar estas dos declaraciones para insertar un nuevo registro si no hay ningún registro donde el valor del remitente del campo es "usuario1", de lo contrario, actualice el registro existente?
La sintaxis es aún más potente que eso: "ON DUPLICATE KEY ACTUALIZACIÓN col1 = Valores (col1) es una forma más elegante de haga lo que describe (y funciona en inserciones de varias filas). También puede usar el valor de col1, como en ON DUPLICATE KEY UPDATE col1 = col1 + 1. – ojrac
¿por qué hacer col1 = col1 + 1? ¿Qué significa eso? significa? –
Tropezamos con este hilo ... col1 = col1 +1 es un ejemplo en el que tal vez tenga un recuento en su tabla, en lugar de usar SELECT para obtener el valor y agregar 1, hará referencia al valor actual en la tabla, y realice un cálculo haciendo que la instrucción SELECT sea redundante. – tutts