Почему бы не использовать InnoDB и получить тот же эффект без ручных блокировок таблицы?
Кроме того, от чего вы защищаете? Рассмотрим двух пользователей (Билл и Стив):
- Билл загружает запись 1234
- Стив загружает запись 1234
- Стив меняет запись 1234 и отправляет
- Билл немного ждет, затем обновляет устаревшую запись 1234 и отправляет. Эти изменения удлиняют Билла.
Блокировка таблицы не обеспечивает большей целостности данных, чем блокировка таблицы MyISAM. MyISAM автоматически блокирует файлы таблиц, когда требуется остановить повреждение данных.
Фактически, причина использовать InnoDB поверх MyISAM в том, что он будет выполнять блокировку строк вместо блокировки таблиц. Он также поддерживает транзакции. Несколько обновлений для разных записей не будут блокировать друг друга, а сложные обновления для нескольких записей будут блокироваться до завершения транзакции.
Вам необходимо учитывать вероятность того, что два обновления одной и той же записи произойдут одновременно для вашего приложения. Вероятно, блокировка таблицы / строки не блокирует второе обновление, а только откладывает его до завершения первого обновления.
EDIT
Из того, что я помню, MyISAM имеет специальное поведение для вставок. Для вставки совсем не нужно блокировать таблицу, так как она просто добавляется в конец таблицы. Это может быть неверно для таблиц с уникальными индексами или первичными ключами без автоинкремента.