Атомное изменение нескольких строк в 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