Запретить двум пользователям редактировать одни и те же данные

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

Я хотел бы реализовать эту функцию в моем собственном приложении, и я немного подумал над этим. Является ли следующий пример хорошей практикой, как это сделать?

Это выглядит примерно так:

1)User A заходит на страницу редактирования загадочной статьи X. Таблица базы данныхEvents запрашивается, чтобы убедиться, что никто другой в данный момент не редактирует ту же страницу, которой к тому времени никто не является. Затем токен генерируется случайным образом и вставляется в таблицу базы данных, которая называетсяEvents.

1)User B также хочу, чтобы сделать обновления для статьи X. Теперь, так как нашUser A уже редактирует статью,Events таблица запрашивается и выглядит так:

|   timestamp   |   owner   |   Origin      |   token      |
------------------------------------------------------------
|   1273226321  |   User A  |   article-x   | uniqueid##   |

2) Отметка времени проверяется. Если он действителен и менее, чем, скажем, 100 секунд, появляется сообщение, и пользователь не может внести какие-либо изменения в запрошенную статью X:

Warning: User A is currently working with this article. In the meantime, editing cannot be done. Please do something else with your life.

3) Если пользователь А решает продолжить и сохранить свои изменения, токен публикуется вместе со всеми другими данными для обновления базы данных и переключает запрос на удаление строки с токеном.uniqueid##, Если он решит сделать что-то еще вместо того, чтобы вносить свои изменения, статья X все равно будет доступна для редактирования через 100 секунд дляUser B

Дайте мне знать, что вы думаете об этом подходе!

Желаю всем хороших выходных!

Ответы на вопрос(3)

Ваш ответ на вопрос