>데이터 베이스 >MySQL 튜토리얼 >MySQL 학습 트랜잭션 제어

MySQL 학습 트랜잭션 제어

coldplay.xixi
coldplay.xixi앞으로
2021-04-07 09:32:192773검색

MySQL 학습 트랜잭션 제어

트랜잭션 제어란 무엇입니까

트랜잭션은 작업의 논리적 단위로 수행되는 일련의 작업을 말하며, 해당 작업은 모두 성공하거나 모두 실패합니다. 트랜잭션은 여러 데이터 수정 사항이 하나의 단위로 처리되도록 보장합니다.

  • MySQL에서는 Innodb 스토리지 엔진을 사용하는 데이터베이스 또는 테이블만 트랜잭션을 지원합니다.
  • 트랜잭션은 데이터베이스의 무결성을 유지하고 SQL 문의 일괄 처리가 실행되거나 실행되지 않도록 하는 데 사용됩니다.
  • 트랜잭션은 다음과 같은 용도로 사용됩니다. INSERT, UPDATEDELETE

관리 Zhang San이 ATM 기기에서 Li Si에게 100위안을 이체하면 은행 비즈니스 시스템에서 2단계 데이터 변경 작업이 수행됩니다.

  1. 장산 계좌에서 100위안 공제
  2. 리시 계좌에 100위안 추가

1번 작업이 성공하고 2번 작업이 실패하면 어떻게 될까요?

관련 무료 학습 권장사항: mysql 비디오 튜토리얼

트랜잭션의 네 가지 특성

데이터베이스가 트랜잭션을 지원하는 경우 데이터베이스에는 ACID네 가지 특성, 즉 원자성(Atomicity)이 있어야 합니다. Consistency(일관성), Isolation(격리), Durability(지속성).

  • 원자성: 트랜잭션은 작업의 원자 단위여야 하며 트랜잭션에 포함된 각 작업은 수행되거나 수행되지 않아야 합니다.
  • 일관성: 트랜잭션이 완료되면 모든 데이터가 일관된 상태여야 합니다.
  • 격리 특성: 트랜잭션은 독립적으로 실행됩니다. 여러 트랜잭션은 서로 격리되어 있으며 서로 간섭하지 않습니다. 트랜잭션을 100% 격리하면 속도가 저하됩니다
  • 지속성: 트랜잭션이 실행된 후 시스템에 미치는 영향은 영구적입니다

MySQL의 트랜잭션 제어

MySQL은 기본에 따라 자동으로 트랜잭션을 제출합니다. , INSERT, UPDATE 및 DELETE의 각 SQL 문은 제출 직후 COMMIT 작업을 실행합니다. 따라서 트랜잭션을 시작하려면 start transaction 또는 begin을 사용하거나 autocommit 값을 0으로 설정할 수 있습니다.

    방법 1:
  • MySQL 학습 트랜잭션 제어
  • 방법 2:
  • MySQL 학습 트랜잭션 제어

Examp 르

    데이터베이스에 로그인하고 학생 데이터베이스를 사용하여 모든 데이터 테이블을 봅니다.
  1. USE student;SHOW TABLES;

MySQL 학습 트랜잭션 제어 2.bank_account 데이터 테이블을 생성하고 두 개의 레코드를 삽입하고 Zhang San의 잔액 필드 값을 +1000

CREATE TABLE bank_account(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) COMMENT '姓名',
	balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;

MySQL 학습 트랜잭션 제어으로 설정합니다. 3. 기본 자동 커밋 값 보기

SELECT @@autocommit;

MySQL 학습 트랜잭션 제어 4.bank_account 데이터 테이블의 모든 레코드 보기

SELECT * FROM bank_account;

MySQL 학습 트랜잭션 제어 5. 트랜잭션 제어 시작 및 두 개의 SQL 문 실행

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;

MySQL 학습 트랜잭션 제어 6. 데이터 테이블의 내용 보기 이때

SELECT * FROM bank_account;

MySQL 학습 트랜잭션 제어 7. 트랜잭션 제어를 다시 시작하고, 동일한 SQL 문 2개를 삽입하고, 커밋을 롤백

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;

MySQL 학습 트랜잭션 제어으로 변경합니다. 8. 데이터 테이블의 내용을 다시 확인하여 이후 데이터가 없음을 확인합니다. 롤백 변경사항

SELECT * FROM bank_account;

MySQL 학습 트랜잭션 제어 참고: 이 기사는 블로거의 MySQL 학습 내용을 요약한 것이며 상업적인 사용을 지원하지 않습니다. 재인쇄할 때 출처를 표시해 주세요. MySQL 학습에 관심과 이해가 있으신 분은 언제든지 블로거와 소통하실 수 있습니다~

더 많은 관련 무료 학습 권장사항: mysql tutorial(동영상)

위 내용은 MySQL 학습 트랜잭션 제어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제