Re: [PHP-ES] UPSERT con PHP
[email protected] (Jairo Sánchez)
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <[email protected]> |
Hola a todos,
hum que yo recuerde no existe un UPSERT que sea para campos diferentes
al la llave primaria,
la verdad yo he utilizado esto pero elaborando una función que es la
que me dice que hacer (INSERT o UPDATE)
y lo último es un función en PL/SQL que es la que se encarga de esto.
puedes poner un PHP una función que haga un
$miSQL="SELECT consecutivo FROM tabla WHERE campo1=$valor1 AND
campo2=$valor2";
$miQuery=pg_query($miSQL);
if (pg_num_rows($miQuery)>0) { //o puedes poner igual a 1
$miSQLEv="UPDATE tabla SET precio = $valor3 WHERE consecutivo = $valor0";
} else {
$miSQLEv="INSERT INTO tabla VALUES($valor0,$valor1,$valor2,$valor3)";
}
$miQueryEv=pg_query($miSQLEv);
mas o menos eso es, se puede hacer de mil formas y desde PHP o
directamente en la Base de datos, pero es mejor que tu lo hagas.
Espero que haberte podido colaborar.
JSLL
2010/6/21 hahmael <[email protected]>:
> Hola, alguien sabe como hacer UPSERT en mysql?
>
> la logica para insertar un registro pero is 2 campos de ese nuevo registro
> son iguales, actualizar el campo 3.
>
> Ejemplo
>
> Tabla ejemplo
>
> id PK - ANIMAL -COLOR -PRECIO
>
> 01- OSO - AZUL - $5000
>
> INSERT INTO ejemplo (animal, color, precio) VALUES ('OSO', 'AZUL', '$8000')
>
> Esto haria un nuevo insert, digamos que son unas 90 consultas producidas a
> traves de un bucle con PHP(este es un ejemplo de tabla, realmente el
> proyecto es con direcciones), pero lo que quero es que si 2 campos que no
> son llaves estan duplicados (ya existen) actualizarlo solamente en ese caso
> el campo PRECIO Sino hacer el nuevo INSERT.
>
> Ya mire REPLACE, vi ON UPDATE KEY que no me serviria en este caso, e incluso
> combinaciones teniendo una tabla de respaldo.
>
> Espero alguien pueda ayudarme con un ejemplo claro ya que son muchos
> inserts.
>
>
>
> --
> Agradecido.
>
> Hahmael Tâher.
>