데이터 베이스 MySQL 튜토리얼 MySQL 트랜잭션-ROLLBACK, COMMIT 사용법에 대한 자세한 설명

MySQL 트랜잭션-ROLLBACK, COMMIT 사용법에 대한 자세한 설명

May 19, 2017 pm 03:19 PM

ROLLBACK 사용

이제 트랜잭션 처리가 무엇인지 알았으니 트랜잭션 관리와 관련된 문제에 대해 논의해 보겠습니다.

트랜잭션 처리 관리의 핵심은 SQL 문 그룹을 논리적 청크로 나누고 데이터를 롤백해야 하는 시기와 롤백하지 말아야 하는 시기를 명확하게 지정하는 것입니다.

MySQL은 다음 문을 사용하여 트랜잭션의 시작을 식별합니다.

입력:

start transaction
로그인 후 복사

MySQL의 ROLLBACK 명령은 MySQL 문을 롤백(실행 취소)하는 데 사용됩니다. 다음 명령문을 참조하세요.

입력:

select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals;
로그인 후 복사

분석: 이 예는 ordertotals 테이블의 내용을 표시하는 것으로 시작됩니다. 먼저 SELECT를 실행하여 테이블이 비어 있지 않음을 표시합니다. 그런 다음 트랜잭션을 시작하고 DELETE 문을 사용하여 ordertotals의 모든 행을 삭제합니다. 또 다른 SELECT 문은 ordertotals가 실제로 비어 있는지 확인합니다. 이때 ROLLBACK 문은 START TRANSACTION 이후의 모든 문을 롤백하는데 사용되며 마지막 SELECT 문에서는 테이블이 비어 있지 않음을 보여줍니다.

분명히 ROLLBACK은 트랜잭션 내에서만 사용할 수 있습니다(START TRANSACTION 명령 실행 후).

롤백할 수 있는 문은 무엇인가요? 트랜잭션은 INSERT, UPDATE 및 DELETE 문을 관리하는 데 사용됩니다. SELECT 문은 롤백할 수 없습니다. (이 작업을 수행해도 소용이 없습니다.) CREATE 또는 DROP 작업을 롤백할 수 없습니다. 이 두 문은 트랜잭션 블록 내에서 사용할 수 있지만 롤백을 수행하는 경우 실행 취소되지 않습니다.


COMMIT 사용

일반 MySQL 문은 데이터베이스 테이블에 대해 직접 실행되고 작성됩니다. 이는 소위 암시적 커밋(Implicit Commit), 즉 커밋(쓰기 또는 저장) 작업이 자동으로 수행되는 것입니다. 그러나 트랜잭션 블록 내에서는 커밋이 암시적으로 발생하지 않습니다. 명시적인 커밋을 수행하려면 다음과 같이 COMMIT 문을 사용합니다.

입력:

start transaction;
delete from orderitems where order_num = 20010;
delete from orders where order_num = 20010;
commit;
로그인 후 복사

분석: 이 예에서는 주문 20010이 시스템에서 완전히 제거됩니다. 여기에는 두 개의 데이터베이스 테이블(주문 및 주문 항목) 업데이트가 포함되므로 주문이 부분적으로 삭제되지 않도록 트랜잭션 블록이 사용됩니다. 마지막 COMMIT 문은 오류 없이 변경 사항만 기록합니다. 첫 번째 DELETE가 작동하지만 두 번째 DELETE가 실패하면 DELETE가 커밋되지 않습니다(사실 자동으로 취소됩니다).

암시적 트랜잭션 종료 COMMIT 또는 ROLLBACK 문이 실행되면 트랜잭션이 자동으로 닫힙니다(향후 변경 사항은 암시적으로 커밋됩니다).

[관련 추천]

1. mysql 무료 동영상 튜토리얼

2. MySQL 트랜잭션 처리 예시 설명

3. MySQL UPDATE 트리거(업데이트) 및 트리거 심층 분석

4. MySQL 삭제 트리거(삭제) 사용법에 대한 자세한 설명

5. MySQL의 삽입 트리거(insert)에 대한 자세한 설명

위 내용은 MySQL 트랜잭션-ROLLBACK, COMMIT 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP의 빅데이터 구조 처리 능력 PHP의 빅데이터 구조 처리 능력 May 08, 2024 am 10:24 AM

PHP의 빅데이터 구조 처리 능력

PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? Jun 03, 2024 pm 08:11 PM

PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까?

PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? Jun 03, 2024 pm 12:19 PM

PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까?

PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? Jun 02, 2024 pm 02:26 PM

PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까?

데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까? 데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까? May 05, 2024 am 09:06 AM

데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까?

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 Dec 09, 2024 am 11:42 AM

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법

PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? Jun 02, 2024 pm 02:13 PM

PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까?

PHP를 사용하여 MySQL 테이블을 만드는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블을 만드는 방법은 무엇입니까? Jun 04, 2024 pm 01:57 PM

PHP를 사용하여 MySQL 테이블을 만드는 방법은 무엇입니까?

See all articles