MySQL(MariaDB) 업데이트 트랜잭션에서 '영향을 받는 0행'이 반환되는 이유는 무엇입니까?
- 안녕하세요 여러분.
MySQL에 이상한 점이 있습니다.(아, 우선 영어가 서툴러서 죄송합니다.)
간단한 테이블과 저장 프로시저를 만들었습니다.테이블 정의는...
CREATE TABLE numTable (
firstNum INT,
secondNum INT
);
INSERT INTO numTable (firstNum, secondNum) VALUES (1, 2);
SP는...
DELIMITER ;;
CREATE PROCEDURE updateNum (
IN num1 INT,
IN num2 INT
)
BEGIN
START TRANSACTION;
UPDATE numTable
SET firstNum = num1, secondNum = num2;
COMMIT;
END ;;
DELIMITER ;
그리고 SP를 이렇게 실행했는데...
CALL updateNum (3, 4);
MySQL은...
영향을 받는 행은 0개
저는 이 결과를 보고 '구문 오류는 없나?'라고 생각했습니다.하지만 아니야.UPDATE 쿼리는 정상적으로 동작했다.numTable의 데이터가 (1, 2)에서 (3, 4)로 변경되었습니다.
그리고 이것도 찾았어요.'START TRANSACTION;' 및 'COMMIT' 문을 삭제하고 updateNum SP를 다시 실행했습니다.결과는...
영향을 받는 행 1개
이번에도 UPDATE 쿼리는 정상적으로 동작했습니다.numTable의 데이터가 정상적으로 변경되었습니다.
왜 이런 차이가 생겼을까요?TRANSACTION 스테이트먼트를 사용하여 적절한 행을 얻을 수 있는 방법이 있습니까?
MySQL 5.6.27, MariaDB 10.0.21, MariaDB 10.1.8에서 테스트한 결과 위와 같습니다.
제 질문을 읽어주셔서 감사합니다.
영향을 받는 행은 다음과 같이 가져옵니다.
ROW_COUNT()
따라서 마지막에 ROW_COUNT()를 선택합니다.
@Leow와 비슷하지만, 거래가 없으면, 업데이트 직후에 모든 것이 손실된다는 것을 알게 되었습니다.그래서:
START TRANSACTION;
update ...
select row_count() into @theCount; -- saved for posterity, perhaps for use at end
COMMIT;
select @theCount;
언급URL : https://stackoverflow.com/questions/33250091/why-mysql-mariadb-update-transaction-returns-0-row-affected
'it-source' 카테고리의 다른 글
C/C++ bool 타입은 type cast'에서 int로 설정했을 때 항상 0 또는 1로 보증됩니까? (0) | 2022.12.29 |
---|---|
Larabel 5.5 ajax 콜 419(알 수 없는 상태) (0) | 2022.12.29 |
(테스트뿐만 아니라) 예외인 것처럼 numpy 경고를 수신하려면 어떻게 해야 합니까? (0) | 2022.12.29 |
'mysqldump'를 사용하여 CSV 형식의 모든 테이블 덤프 (0) | 2022.12.19 |
vue에서 sass 변수를 재정의하려면 어떻게 해야 합니까? (0) | 2022.12.19 |