mysql 中数据的原子性

Atomicity of the data in mysql

其中一位客户要求我们在 mysql 中编写一个存储过程,其中规定一个数据只能由一个资源访问(即使它们恰好是多个资源准备读取数据,无论谁先来,都将首先获得锁定并更改其标志,以便其他资源不应该能够在 table 中锁定此数据行。 存储过程是为它写的,我相信它类似于银行交易管理,但我不知道如何为它写存储过程,任何帮助将不胜感激,提前致谢。

    Step : 1

CREATE TABLE `test_db`.`Jobs` (
  `id` INT NOT NULL,
  `JOB` VARCHAR(45) NOT NULL,
  `status` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC));

Step : 2


DELIMITER $$
create procedure aabraKaDaabra(IN ids INT)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
START TRANSACTION;
select id from Jobs where id=ids for update;
update Jobs set status = 'Submitted' where id=ids;
commit;
END$$; 

Step : 3


select * from test_db.Jobs order by id desc;

Note:
 Make sure that you have inserted a few of the value for the table.

Step : 4
call test_db.aabraKaDaabra(1);

这就是我所期待的并解决了它,它非常有效