我想要一个执行以下操作的存储过程:
锁定桌子
检查其中的值
根据该值更新同一张表
解锁桌子
如果1到4之间发生错误,表格是否会被解锁?还是我需要以某种方式捕获错误?(怎么样?)
有一个更好的方法吗?
您不能在MySQL的存储过程中锁定表。
存储例程中不允许使用SQL语句
存储的例程不能包含任意SQL语句。以下语句是不允许的:
锁定语句
LOCK TABLES
和UNLOCK TABLES
。— http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html
如果你正使用InnoDB,那么你可以通过使用锁定感兴趣的行实现自己的目的,锁定读取用SELECT ... FOR UPDATE
。当您遇到错误并回滚事务时,这些行将自动解锁。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句