돈이있는 변수가 0보다 작 으면 트랜잭션의 금액으로 변수를 줄이는 트랜잭션이 있습니다. 트랜잭션이 발생하기 전에 금액이 반환되어야합니다. 이 경우 MariaDB에서 롤백을 적절하게 사용하려면 어떻게해야합니까?MariaDB에서 조건부 롤백
--- 편집은
나는 그런 일이 있고, 그들 모두를 작동 돈이 0과 일부 미만이면 때문에 if(budget<0)
의 라인을 체크 아웃,하지만하지 않습니다, 반복이 만들어졌다 그리고 임시 테이블에 저장, 테이블이 그들에게있다
BEGIN
DECLARE temppesel text;
DECLARE tempsalary int;
DECLARE budget int DEFAULT cash;
DECLARE done bool DEFAULT false;
DECLARE occ CURSOR FOR (SELECT pesel, pensja FROM pracownicy where zawod=occupation);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
START TRANSACTION;
DROP TABLE IF EXISTS temp;
CREATE TABLE temp (Result text);
OPEN occ;
occ : LOOP
FETCH occ INTO temppesel, tempsalary;
SET budget = budget - tempsalary;
IF(done) THEN
LEAVE occ;
END IF;
IF(budget<0) THEN
ROLLBACK;
LEAVE occ;
END IF;
INSERT INTO temp VALUES (concat('********',substr(temppesel,9,3), ', wyplacono'));
END LOOP;
CLOSE occ;
SELECT * FROM temp;
DROP TABLE temp;
COMMIT;
END
방금 DROP을 제거하고 TEMPORARY를 테이블 temp에 추가하면 작동합니다. – jakub1998