首页 > 解决方案 > 执行更新时锁定两个表的最佳方法

问题描述

我有一个系统可以增加和减少值,然后将它们应用于总值。所以我的桌子看起来像这样increment_value_table,,decrement_value_tabletotal_value_table

我有一个名为的函数updateValues,它检查increment_value_table&decrement_value_table是否有任何更改应用于total_value_table表。每个值也有一个item_id. 因此可以同时更新多个 item_id。

只要不同时调用两次,此函数就可以正常工作。因为它可能导致重复incrementdecrement. 所以我试图想办法设置它,以便这个函数的一个实例可以同时运行。解决方案需要在数据库级别,因为有多个服务器(即本地布尔值或数组不起作用)

我目前的解决方案/想法是基本上在数据库中创建一个具有唯一列的表,item_id并且每次尝试更新函数时,它都会检查 item_id 是否存在。如果不是,它会尝试插入它。如果它成功插入它,那么它会执行更新。完成后,它会从数据库中删除它。

我想知道这是否是正确的方法和/或这是否会导致问题?

如果我的问题/问题不够清楚,请告诉我。我会尝试改写它。

标签: mysqllocking

解决方案


推荐阅读