집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 학습 트랜잭션 제어
트랜잭션 제어란 무엇입니까
트랜잭션은 작업의 논리적 단위로 수행되는 일련의 작업을 말하며, 해당 작업은 모두 성공하거나 모두 실패합니다. 트랜잭션은 여러 데이터 수정 사항이 하나의 단위로 처리되도록 보장합니다.
관리 Zhang San이 ATM 기기에서 Li Si에게 100위안을 이체하면 은행 비즈니스 시스템에서 2단계 데이터 변경 작업이 수행됩니다.
1번 작업이 성공하고 2번 작업이 실패하면 어떻게 될까요?
관련 무료 학습 권장사항: mysql 비디오 튜토리얼
트랜잭션의 네 가지 특성
데이터베이스가 트랜잭션을 지원하는 경우 데이터베이스에는 ACID네 가지 특성, 즉 원자성(Atomicity)이 있어야 합니다. Consistency(일관성), Isolation(격리), Durability(지속성).
MySQL의 트랜잭션 제어
MySQL은 기본에 따라 자동으로 트랜잭션을 제출합니다. , INSERT, UPDATE 및 DELETE의 각 SQL 문은 제출 직후 COMMIT 작업을 실행합니다. 따라서 트랜잭션을 시작하려면 start transaction 또는 begin을 사용하거나 autocommit 값을 0으로 설정할 수 있습니다.
Examp 르
USE student;SHOW TABLES;
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;
으로 설정합니다. 3. 기본 자동 커밋 값 보기
SELECT @@autocommit;
4.bank_account 데이터 테이블의 모든 레코드 보기
SELECT * FROM bank_account;
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;
6. 데이터 테이블의 내용 보기 이때
SELECT * FROM bank_account;
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;
으로 변경합니다. 8. 데이터 테이블의 내용을 다시 확인하여 이후 데이터가 없음을 확인합니다. 롤백 변경사항
SELECT * FROM bank_account;
참고: 이 기사는 블로거의 MySQL 학습 내용을 요약한 것이며 상업적인 사용을 지원하지 않습니다. 재인쇄할 때 출처를 표시해 주세요. MySQL 학습에 관심과 이해가 있으신 분은 언제든지 블로거와 소통하실 수 있습니다~
더 많은 관련 무료 학습 권장사항: mysql tutorial(동영상)
위 내용은 MySQL 학습 트랜잭션 제어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!