Вставка новых данных, обновление существующих

Есть замечательная конструкция в MySQL, которая позволяет при вставке существующих первичных ключей, обновлять эту строку, иначе вставляется новая запись.

1
2
3
4
5
6
7
8
INSERT INTO
    table_name(id, name, pass)
VALUES
    ('111', 'myname', 'mypass')
ON DUPLICATE KEY
    UPDATE
        name = VALUES(name),
        pass = VALUES(pass)

Если в таблице table_name существует первичный ключ id, то обновятся name и pass, в другом случае произойдет вставка новой записи.