Aprovecha el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comienza ahora

Termina en:

02d

20h

55m

34s

1

Insert condicional en MySQL

A veces surge la necesidad de añadir un registro a una tabla si se cumple una determinada condición. La primera idea que viene a la mente podría ser hacer un transacción, donde primero compruebas esa condición, y de cumplirse se lanza la insert. Pero, en determinadas ocasiones o entornos estó puede llegar a ser complicado o imposible. Si quieres añadir un registro en una tabla si no existe, también se podría hacer un insert ignore, pero si la condición no viene de su primary key tampoco daría resultado.

En otros SGBD como Oracle o SQL Server, se podría llegar a hacer un merge, pero en MySql esta instrucción no es viable por lo que surge "dual”. Dual es una tabla originaria de Oracle, que tiene una sola columna y puede servirnos de comodín a la hora de realizar la insert condicional. Con un pequeño ejemplo lo vemos mejor:

INSERTINTO table_1 (user_id, importe)
SELECT1, 10FROM dual
WHEREnotexists (SELECT * 
                  FROM table_2 
                  WHERE user_id=1ANDdate(fecha)=date(now()))

En el ejemplo podemos ver como ponemos la insert normalmente, pero para añadir el registro, usamos una select de la tabla dual con los datos a insertar. Luego, marcamos la condición deseada en el where de esta consulta, consiguiendo así la insert condicional en MySql.

En oracle esta tabla tiene muchos más usos como hacer operaciones matemáticas, usar funciones, etc… ya que no se permite realizar una consulta sin un FROM.

Escribe tu comentario
+ 2