mysql - 用户和管理员在数据库中插入数据时发生冲突的问题,请参阅下面的说明

标签 mysql database

我有一种情况,当管理员在表“users”中编辑用户“A”的详细信息,同时用户“A”本身在表 users 中编辑其详细信息时,会发生什么情况。会体现谁的效果..又可以做些什么来使其具体到某个人或给予优先权?

感谢和问候...

最佳答案

正如 Michael J.V. 所说,最后一个获胜 - 除非您有锁定机制,或者构建应用程序逻辑来处理这种情况。

锁定机制往往会显着降低数据库的性能。 http://dev.mysql.com/doc/refman/5.5/en/internal-locking.html概述了 MySQL 中的选项。但是,您描述的场景 - 管理员访问记录,锁定该记录直到他们修改记录 - 将导致各种性能问题。

另一种方法是在写回记录之前检查“脏”记录。伪代码:

User finds record
Application stores (hash of) record in memory
User modifies copy of record
User instructs application to write record to database
Application retrieves current database state, compares to original
If identical
     write change to database
If not identical 
     notify user

在此模型中,管理员的更改将触发“通知用户”流程;您的应用程序可能决定停止写入,或强制用户在修改记录并重试之前刷新数据库中的记录。

更多代码,但引起性能/可扩展性问题的可能性要小得多。

关于mysql - 用户和管理员在数据库中插入数据时发生冲突的问题,请参阅下面的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371604/

相关文章:

mysql - 无法连接数据库 - MAMP

java - 修改 Oracle Sql 查询返回的结果内容

mysql - 错误代码 : 1221. UPDATE 和 ORDER BY 的使用不正确——更新表 Abonnement 时

c# - 如何从 MySQL 数据库中获取表名的 `List<string>`?

php - 拉维 4.2 : migration a string field with unique constraint fails

php - MySQL - 写入不同的服务器

MySQL : Select statement inside Check statement

c# - 当 SQL Azure 中不存在数据库时,是否需要先迁移 EF 代码?

Android App : can I use iOS sqlite? 如果没有,我如何从云 (Parse.com) 中的数据库创建本地数据库?

mysql - iOS 应用程序开发 - 数据库