MySQL LOCK TABLES替代品(用于存储过程)

时间:2014-07-17 04:58:38

标签: mysql sql stored-procedures

在执行存储过程时,有人知道LOCK表的方法吗?

我的程序是一个简单的聚合过程,它将数据加载到其他表中。完成后,它应该将原始表上的所有选定行更新为aggregated

在程序中锁定原始表似乎是必不可少的,这样我就可以避免在这个过程中新行将插入第一个表的情况,但是在过程结束时它们仍然会被计为{ {1}}(因为此更新部分适用于整个表格)。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你不需要锁。

如果您的数据库是Innodb,请使用交易。

对于不支持交易的Myisam表,您可以使用具有三个值的聚合字段:不聚合,聚合,聚合。

  1. 您的存储过程会将所有选中的行标记为聚合
  2. 将标记的行复制到新表
  3. 完成后将行更新为聚合
  4. 如果发生错误,请重置该值。