Атомное изменение нескольких строк в MySQL

У меня есть таблица MySQL в форме

entryID (PK), UserID, entryName

Каждый пользователь (как определено его userID) может создать любое количество записей в этой таблице, но для каждого пользователя entryName должно быть уникальным. Я хотел бы позволить пользователям изменять все свои entryNames одновременно. Таким образом, я предоставлю пользователю форму с несколькими полями entryName, которые они могут редактировать.

Проблема в том, что при попытке передать это в базу данных. Я не могу просто обновить строку за строкой, как в случае:

1, 1, Entry1
2, 1, Entry2

становление

1, 1, Entry2
2, 1, Entry3

может вызвать ошибку при попытке переименовать Entry1 в Entry2. В настоящее время я читаю все строки с заданным UserID, затем удаляю их и воссоздаю каждую строку. Это работает. Проблема с этим методом, однако, заключается в том, что если пользователю удастся вызвать ошибку в моем скрипте, ВСЕ его записи будут удалены... и потеряны. И это плохо. Как решить это?

1 ответ

Решение

Это типичный сценарий для СДЕЛКИ С ROLLBACK при ИСКЛЮЧЕНИИ.

Вы можете начать здесь: http://dev.mysql.com/doc/refman/5.0/en/commit.html

Другие вопросы по тегам