13.3.3 암시 적 커밋을 발생시키는 문
이 섹션에 표시된 문 (및 모든 동의어)는 사용자가이 문을 실행하기 전에 COMMIT
을 실행 한 것처럼 현재 세션에서 사용중인 모든 트랜잭션을 암묵적으로 종료 합니다. MySQL 5.5.3의 시점에서는 이러한 진술의 대부분이 실행 후 암시 적 커밋도 발생시킵니다. 자세한 내용은이 섹션의 마지막을 참조하십시오.
데이터베이스 개체를 정의하거나 수정하려면 데이터 정의 언어 (DDL) 문.
ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME
,ALTER EVENT
,ALTER PROCEDURE
,ALTER SERVER
,ALTER TABLE
,ALTER VIEW
,CREATE DATABASE
,CREATE EVENT
,CREATE INDEX
,CREATE PROCEDURE
,CREATE SERVER
,CREATE TABLE
,CREATE TRIGGER
,CREATE VIEW
,DROP DATABASE
,DROP EVENT
,DROP INDEX
,DROP PROCEDURE
,DROP SERVER
,DROP TABLE
,DROP TRIGGER
,DROP VIEW
,RENAME TABLE
,TRUNCATE TABLE
.ALTER FUNCTION
,CREATE FUNCTION
및DROP FUNCTION
또한 저장 기능 (그러나 UDF 제외)에서 사용 된 경우 암시 적 커밋을 발생시킵니다. (ALTER FUNCTION
은 스토어드 함수에서만 사용할 수 있습니다.)CREATE TABLE
및DROP TABLE
문은TEMPORARY
키워드가 사용되는 경우 트랜잭션을 커밋하지 않습니다. (이것은 커밋을 발생시키는ALTER TABLE
또는CREATE INDEX
등의 임시 테이블에 대한 다른 작업에는 적용되지 않습니다.) 그러나 암시 적 커미트가 없지만 문 롤백 할 수 없습니다. 즉,이 같은 문을 사용하면 트랜잭션의 원 자성이 침해됩니다. 예를 들어,CREATE TEMPORARY TABLE
을 사용한 후 트랜잭션을 롤백해도 그 테이블은 존재하고 있습니다.InnoDB
에서CREATE TABLE
문은 하나의 트랜잭션으로 처리됩니다. 즉, 사용자가ROLLBACK
을 실행해도 사용자가 트랜잭션에서 수행 한CREATE TABLE
문은 되돌릴 수 없습니다.CREATE TABLE ... SELECT
임시 테이블 이외의 테이블을 작성하는 경우 명령문이 실행되는 전후에 암시 적 커밋을 발생시킵니다. (CREATE TEMPORARY TABLE ... SELECT
에 커미트가 없습니다.) 이것은 롤백 한 후 마스터에서 테이블을 만들 수 있지만, 바이너리 로깅에 실패했기 때문에 슬레이브에 복제되지 않는다는 복제 동안의 문제를 해결하기 위해 수행됩니다. 자세한 내용은 Bug # 22865를 참조하십시오.mysql
데이터베이스의 테이블을 암시 적으로 사용하거나 변경하는 문.CREATE USER
,DROP USER
,GRANT
,RENAME USER
,REVOKE
,SET PASSWORD
.트랜잭션 제어 및 잠금 문.
BEGIN
,LOCK TABLES
,SET autocommit = 1
(이 값이 여전히 1이 아닌 경우),START TRANSACTION
,UNLOCK TABLES
.UNLOCK TABLES
는 비 트랜잭션 테이블 잠금을 얻기 위해 현재LOCK TABLES
에 잠겨있는 테이블이있는 경우에만 트랜잭션을 커밋합니다.FLUSH TABLES WITH READ LOCK
은 테이블 수준의 잠금을 획득하지 않기 때문에이 문 다음UNLOCK TABLES
에 커미트가 없습니다.트랜잭션을 중첩 할 수 없습니다. 이것은
START TRANSACTION
문 또는 동의어 중 하나를 실행할 때 현재의 모든 트랜잭션에서 수행되는 암시 적 커밋의 결과입니다.XA 트랜잭션이
ACTIVE
상태에있는 동안 암시 적 커밋을 발생시키는 문을 트랜잭션에서 사용할 수 없습니다.BEGIN
문은BEGIN ... END
복합 문을 시작하는BEGIN
키워드의 사용과는 다릅니다. 후자는 암시 적 커밋을 발생시키지 않습니다. 섹션 13.6.1 "BEGIN ... END 복합 문"부분 을 참조하십시오.데이터로드 문.
LOAD DATA INFILE
.LOAD DATA INFILE
는NDB
스토리지 엔진을 사용하는 테이블에 대해서만 암시 적 커밋을 발생시킵니다. 자세한 내용은 Bug # 11151를 참조하십시오.관리 문.
ANALYZE TABLE
,CACHE INDEX
,CHECK TABLE
,LOAD INDEX INTO CACHE
,OPTIMIZE TABLE
,REPAIR TABLE
.복제 제어 문. MySQL 5.6.7에서 :
START SLAVE
,STOP SLAVE
,RESET SLAVE
,CHANGE MASTER TO
. (Bug # 13858841)
MySQL 5.5.3의 시점에서 이전에 실행 전에 암시 적 커밋을 발생시킨 문의 대부분이 실행 후에도 발생시킵니다. 그 목적은 이러한 각 문은 어느쪽으로도 롤백 할 수 없기 때문에 그것을 자신의 특별한 트랜잭션에서 처리 할 수 있습니다. 다음 목록은이 변경 관련 추가 정보를 보여줍니다.
이전에는 특별한 경우였다
CREATE TABLE
변형 (InnoDB
테이블에 대한CREATE TABLE
또는CREATE TABLE ... SELECT
)는CREATE TABLE
이 한결같이 실행 전후에 암시 적 커밋을 생성하기 위하여 현재는 특수는 사라 졌어요.FLUSH
및RESET
문은 암시 적 커밋을 발생시킵니다.트랜잭션 제어 및 잠금 문은 이전과 동일하게 동작합니다.