Re: [PHP-ES] UPSERT con PHP

[email protected] (Jonathan Tapicer)
Newsgroups php.general.es
Message-ID <[email protected]>
Hola,

Podés usar ON DUPLICATE KEY UPDATE, sería algo así para tu ejemplo:

INSERT INTO ejemplo (animal, color, precio) VALUES ('OSO', 'AZUL', '$8000')
  ON DUPLICATE KEY UPDATE precio = '$8000';

Pero... el ON DUPLICATE KEY UPDATE se dispara sólo cuando se detecta
un duplicado ya sea por PK o por UNIQUE. Por lo que en tu caso
deberías cambiar la PK para que cubra sólo los campos animal y color,
en lugar de los tres.

Más info sobre esto:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Saludos,

Jonathan

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.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.