validar update mysql_affected_rows insertar hacer ejemplos datos con como mysql insert duplicates field

update - mysql inserta en CAMPO duplicado en vez de KEY



update mysql php (3)

------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 12 | -------------------------------------

user_id: autoincreament, user_visits: predeterminado 1

INSERT INTO table (user_name) VALUES (''baz''), (''bar''), (''qux'');

la declaración anterior, por supuesto, insertará 3 nuevos registros, como resultado:

------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 12 | ------------------------------------- | 3 | baz | 1 | ------------------------------------- | 4 | bar | 1 | ------------------------------------- | 5 | qux | 1 | -------------------------------------

pero lo que estoy tratando de lograr es:

------------------------------------- | user_id | user_name | user_visits | ------------------------------------- | 1 | foo | 5 | ------------------------------------- | 2 | bar | 13 | ------------------------------------- | 3 | baz | 1 | ------------------------------------- | 4 | qux | 1 | -------------------------------------

tan literalmente

si el campo nombre_usuario existe, actualice las visitas_usuarios, de lo contrario inserte un nuevo registro.

¿Es posible lograr esto con una única declaración de inserción?


Claro que sí, pero no tiene nada que ver con su declaración de insert . Debe agregar un índice único en la columna user_name :

create unique index user_name_idx on yourtable (user_name);

Luego, después en su código que rastrea el recuento tendrá que decidir si desea hacer una inserción o una actualización.



Debe crear una clave para su campo de nombre de usuario y luego usar la consulta INSERT ON DUPLICATE para actualizar los valores de las columnas.

Por ejemplo, su consulta debe ser,

INSERT INTO table (user_name) VALUES (''baz''), (''bar''), (''qux'') ON DUPLICATE KEY UPDATE user_visits=user_visits+1;

Para obtener más información, visite http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html