我的问题是,我想插入一个新行,其计算值依赖于事务早期执行的选择。但避免并行事务插入相同的计算值。
这个问题应该通过事务隔离级别SERIALIZABLE来避免。
我运行以下步骤:
在此之后,在MySQL中,我有两个具有相同x值的新行,但我希望两个事务中的一个中止。
在PostgreSQL上,我可以执行LOCK TABLE tableNameINSHARE MODE
,这会阻止TRANSACTION A执行第6步。在MySQL上,我尝试了http://dev.mysql.com/doc/refman/5.1/de/lock-tables.html中描述的锁定技术,但没有成功。
有什么建议吗?谢谢。
我发现了问题。MySQL工作台不会为每个sql窗口分叉一个新事务……所以我正在使用唯一的事务……使用连接到服务器的两个终端后。一切都按预期工作。