나는 MySQL MyISAM을 사용하고 있으며 변경할 수 없다. 그러나 나는 트랜잭션 접근법에 대해서만 잘 알고있다. 의 MyISAM은 트랜잭션을 지원하지 않기 때문에이 같은 일에 두 업데이트 쿼리를 결합 생각 해요 :하나의 MySQL 쿼리에서 여러 업데이트가 트랜잭션 동작을 에뮬레이트 할 수 있습니까?
UPDATE table1, table2 SET table1.col1='value1', table2.col1='value2'
WHERE table1.col3='567' AND table2.col6='876'
는 하위 쿼리가 실패하면, 다른 하나는 다음과 같이 실행되지 않습니다이 보장합니까 그러면 쿼리는 FALSE를 반환 할 것입니까?
이것을 테스트하기 위해 유효한 필드 이름을 table1에 유효하지 않은 것으로 바꾼 다음 표 2에 대해 유효하게 대체했습니다. 두 경우 모두 phpMyAdmin이 오류를 반환했으며 쿼리가 실행되지 않았습니다.
다른 쿼리 오류가 발생해도이 동작을 관찰 할 수 있습니까?
트랜잭션과 원격으로 비슷한 것을 보장하지 않습니다. 무엇을 사용하려고해도 OS의 fsync 호출을 호출하거나 강제로 fsync를 강제 실행하지 않습니다. 따라서 정의에 따르면 - 아니요, 트랜잭션 동작을 에뮬레이션하지 않습니다. 당신은 MyISAM과 거래를 할 수없고, 그것을 에뮬레이션 할 수 없으며, 그것을 짜낼 수 없습니다. 자물쇠를 시도 할 수는 있지만 그럴 수는 없지만 그럴 수는 없습니다. –