-1

有一个客户要求我们在mysql中写一个存储过程,它规定一个数据只能被一个资源访问(即使它们恰好是多个准备读取数据的资源,谁先来谁就拿锁首先并会更改其标志,以便其他资源不应该能够锁定表中的该数据行。为它编写存储过程,我相信它类似于银行事务管理,但我没有线索如何为其编写存储过程,任何帮助将不胜感激,在此先感谢。

4

1 回答 1

0
    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);

这是我所期待的并解决了它,它就像一个魅力

于 2017-12-16T16:18:24.500 回答