태그 보관물: insert-update

insert-update

ʻINSERT… ON DUPLICATE KEY UPDATE`에서 2 개의 행이 영향을받는 이유는 무엇입니까?

다음 표에서 INSERT ... ON DUPLICATE KEY UPDATEfor a PRIMARY KEY를 수행하고 있습니다 .

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    |       |
+------------+---------------------------------+------+-----+---------+-------+

그러나 이러한 값은 고유해야하지만 2 개의 행이 영향을받는 것으로 나타났습니다.

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)

왜 이런 일이 발생합니까?

편집하다

비교를 위해 다음 쿼리를 참조하십시오.

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


답변

에서 수동 :

ON DUPLICATE KEY UPDATE를 사용하면 행이 새 행으로 삽입 된 경우 행당 영향을받는 행 값은 1이고 기존 행이 업데이트 된 경우 2입니다.