атомное изменение нескольких строк в MySQL - PullRequest
1 голос
/ 24 марта 2011

У меня есть таблица mySQL вида

entryID (PK), UserID, entryName

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

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

1, 1, Entry1
2, 1, Entry2

становится

1, 1, Entry2
2, 1, Entry3

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

1 Ответ

2 голосов
/ 24 марта 2011

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

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

...