Autocommit이 활성화 된 InnoDB를 기반으로하는 모든 테이블을 가진 Mysql 데이터베이스에서 하위 쿼리 및/또는 조인이 포함 된 쿼리는 원 자성이됩니까?MySQL의 조인 삽입/업데이트가 원자 적 연산입니까?
예 :
가
는INSERT INTO users SELECT (x,y,z) FROM users, comments WHERE users.id = comments.user_id;
(결합)
는UPDATE users, comments SET users.x = x1 WHERE users.age > 30;
(결합)UPDATE users, comments SET users.x = x1, comments.y = y1 WHERE users.age > 30;
(결합)UPDATE users, comments SET users.x = x1, comments.y = y1 WHERE users.id IN (SELECT id FROM users WHERE age > 30);
(부질) ,617,
그러나 원자적인 것은 암시 적으로 다른 쿼리가 쿼리 실행을 방해하지 않는다는 것을 의미하지 않습니다. "INSERT INTO users SELECT (x, y, z) FROM users, comments WHERE users.id = comments.user_id AND condition"과 같은 쿼리에서 WHERE 조건이 충족되면 업데이트가 올바르게 실행됩니다 후. 그게 옳지 않아? –
@DamianoBarbati 내 대답이 업데이트되었습니다. – fancyPants
가 동의합니다. 내 가정은 행이 다른 테이블에서 복사되고 그 행에있는 데이터가 변경된 질문의 'sql 문'을 기반으로했습니다. –