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