ProstgreSQL,MySQL乐观并发

我有一个Web应用程序,其中数据可以由用户同时更改。目前,我在每个表单中包含旧行值,并且仅在数据相同时才更新行。使用SQLite这是唯一的选择。这很难看,如果能提供更好的方法,我会考虑切换到另一个SQL数据库。 PostgreSQL或MySQL是否有隐含的行时间戳或版本号,而人们可以使用它们?     
已邀请:
使用数字计数器比使用时间戳更好。无论时间戳如何精确,都可以同时提交两个版本的数据并获得相同的时间戳。通过使用数值计数器(例如
update mytable set counter=counter+1, data=? where id=? and counter=?
),每次行变化时,它获得唯一的计数器值。 (在where子句中提供原始计数器值,如果数据已由其他人更改,则不会匹配任何行。) 虽然这不是一个“隐含”的解决方案,但我认为没关系。像Hibernate这样的库可以让你自动完成这类工作,所以你的代码不必担心它。     
当与
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
约束结合使用时,MySQL有一个可用于此目的的
TIMESTAMP
数据类型。 在PostgreSQL中,每个名为
xmin
的表上都有一个“隐藏字段”,可用于确定行版本。     
AFAIK,在Postgres中获取更新时间戳需要触发器,请参阅以下非常类似的问题: 在PostgreSQL中更新行时更新时间戳 这个问题(和Eric的回答)指出MySQL支持这个没有触发器。     

要回复问题请先登录注册