mysql вставляет в дубликат FIELD вместо KEY

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

user_id: автоинкремент, user_visits: по умолчанию 1

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

выше оператор, конечно же, вставит 3 новые записи, в результате:

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

, но я пытаюсь достичь:

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

буквально,

если поле user_name существует, обновить user_visits, иначе вставить новую запись.

можно ли добиться этого с помощью одного оператора вставки?

19
задан pepsi600 26 April 2011 в 05:42
поделиться