unico - registros duplicados php mysql
¿Por qué se ven afectadas 2 filas en mi `INSERTAR... EN ACTUALIZACIÓN DE LLAVE DUPLICADA ''? (2)
Estoy haciendo un INSERT ... ON DUPLICATE KEY UPDATE
para una PRIMARY KEY
en la siguiente tabla:
DESCRIBE users_interests;
+------------+---------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------------------+------+-----+---------+-------+
| uid | int(11) | NO | PRI | NULL | |
| iid | int(11) | NO | PRI | NULL | |
| preference | enum(''like'',''dislike'',''ignore'') | YES | | NULL | |
+------------+---------------------------------+------+-----+---------+-------+
Sin embargo, aunque estos valores deben ser únicos, veo 2 filas afectadas.
INSERT INTO users_interests (uid, iid, preference) VALUES (2, 2, ''like'')
ON DUPLICATE KEY UPDATE preference=''like'';
Query OK, 2 rows affected (0.04 sec)
¿Por qué está pasando esto?
EDITAR
Para la comparación, vea esta consulta:
UPDATE users_interests SET preference=''like'' WHERE uid=2 AND iid=2;
Query OK, 1 row affected (0.44 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Del manual :
Con ON DUPLICATE KEY UPDATE, el valor de filas afectadas por fila es 1 si la fila se inserta como una nueva fila y 2 si se actualiza una fila existente.
Para saber si actualizó una fila (clave duplicada) o simplemente insertó una: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html