집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 및 JDBC용 트랜잭션 제어(TCL) 소개
기사 디렉토리
관련 무료 학습 추천 : mysql 비디오 튜토리얼
1. MySQL 트랜잭션 제어(트랜잭션 제어 언어)
(1) 트랜잭션 특성(ACID)
트랜잭션은 논리적 작업 집합, 즉 구성하는 논리 단위를 의미합니다. 이 작업 집합은 함께 성공하거나 함께 실패합니다.
(2)MySQL 트랜잭션 제어
set autocommit = false;
set autocommit = false;
rollback;
commit ;
(3)mysql事务演示
☆查看已经存在的emp表:
mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename | job | mgr | hiredate | sal | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+| 1002 | 白展堂 | clerk | 1001 | 1983-05-09 | 7000.00 | 200.00 | 10 || 1003 | 李大嘴 | clerk | 1002 | 1980-07-08 | 8000.00 | 100.00 | 10 || 1004 | 吕秀才 | clerk | 1002 | 1985-11-12 | 4000.00 | NULL | 10 || 1005 | 郭芙蓉 | clerk | 1002 | 1985-03-04 | 4000.00 | NULL | 10 || 1007 | 小白 | clerk | 1001 | 2019-11-25 | 5555.00 | 500.00 | NULL || 2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 | NULL | 20 || 2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 | 20 || 2003 | 吕子乔 | clerk | 2002 | 1995-05-19 | 7300.00 | 100.00 | 20 || 2004 | 张伟 | clerk | 2002 | 1994-10-12 | 8000.00 | 500.00 | 20 || 2005 | 曾小贤 | clerk | 2002 | 1993-05-10 | 9000.00 | 700.00 | 20 || 3001 | 刘梅 | leader | NULL | 1968-08-08 | 13000.00 | NULL | 30 || 3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 | 30 || 3003 | 夏雪 | clerk | 3002 | 1989-09-21 | 8000.00 | 300.00 | 30 || 3004 | 张一山 | clerk | 3002 | 1991-06-16 | 8000.00 | 200.00 | 30 || 3007 | 嫦娥 | clerk | NULL | NULL | NULL | NULL | 10 |+-------+--------+--------+------+------------+----------+--------+--------+15 rows in set (0.00 sec)
①设置手动提交:
mysql> set autocommit=false;Query OK, 0 rows affected (0.03 sec)
②在emp表中插入一条ename为mary的语句:
mysql> insert into emp(ename,job,commit) -> values('mary','clerk',300);Query OK, 1 row affected (0.02 sec)mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename | job | mgr | hiredate | sal | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+| 1002 | 白展堂 | clerk | 1001 | 1983-05-09 | 7000.00 | 200.00 | 10 || 1003 | 李大嘴 | clerk | 1002 | 1980-07-08 | 8000.00 | 100.00 | 10 || 1004 | 吕秀才 | clerk | 1002 | 1985-11-12 | 4000.00 | NULL | 10 || 1005 | 郭芙蓉 | clerk | 1002 | 1985-03-04 | 4000.00 | NULL | 10 || 1007 | 小白 | clerk | 1001 | 2019-11-25 | 5555.00 | 500.00 | NULL || 2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 | NULL | 20 || 2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 | 20 || 2003 | 吕子乔 | clerk | 2002 | 1995-05-19 | 7300.00 | 100.00 | 20 || 2004 | 张伟 | clerk | 2002 | 1994-10-12 | 8000.00 | 500.00 | 20 || 2005 | 曾小贤 | clerk | 2002 | 1993-05-10 | 9000.00 | 700.00 | 20 || 3001 | 刘梅 | leader | NULL | 1968-08-08 | 13000.00 | NULL | 30 || 3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 | 30 || 3003 | 夏雪 | clerk | 3002 | 1989-09-21 | 8000.00 | 300.00 | 30 || 3004 | 张一山 | clerk | 3002 | 1991-06-16 | 8000.00 | 200.00 | 30 || 3007 | 嫦娥 | clerk | NULL | NULL | NULL | NULL | 10 || 4008 | mary | clerk | NULL | NULL | NULL | 300.00 | NULL |+-------+--------+--------+------+------------+----------+--------+--------+16 rows in set (0.00 sec)
③使用rollback
rollback;
submit 커밋 ;
(3) mysql 트랜잭션 데모
☆기존 emp 테이블 보기:
mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename | job | mgr | hiredate | sal | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+| 1002 | 白展堂 | clerk | 1001 | 1983-05-09 | 7000.00 | 200.00 | 10 || 1003 | 李大嘴 | clerk | 1002 | 1980-07-08 | 8000.00 | 100.00 | 10 || 1004 | 吕秀才 | clerk | 1002 | 1985-11-12 | 4000.00 | NULL | 10 || 1005 | 郭芙蓉 | clerk | 1002 | 1985-03-04 | 4000.00 | NULL | 10 || 1007 | 小白 | clerk | 1001 | 2019-11-25 | 5555.00 | 500.00 | NULL || 2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 | NULL | 20 || 2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 | 20 || 2003 | 吕子乔 | clerk | 2002 | 1995-05-19 | 7300.00 | 100.00 | 20 || 2004 | 张伟 | clerk | 2002 | 1994-10-12 | 8000.00 | 500.00 | 20 || 2005 | 曾小贤 | clerk | 2002 | 1993-05-10 | 9000.00 | 700.00 | 20 || 3001 | 刘梅 | leader | NULL | 1968-08-08 | 13000.00 | NULL | 30 || 3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 | 30 || 3003 | 夏雪 | clerk | 3002 | 1989-09-21 | 8000.00 | 300.00 | 30 || 3004 | 张一山 | clerk | 3002 | 1991-06-16 | 8000.00 | 200.00 | 30 || 3007 | 嫦娥 | clerk | NULL | NULL | NULL | NULL | 10 |+-------+--------+--------+------+------------+----------+--------+--------+15 rows in set (0.00 sec)①수동 커밋 설정:
conn.setAutoCommit(false);//将JDBC事务设置手动提交conn.commit();conn.rollback();
package jdbc;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import util.JdbcUtil;/** * JDBC事务控制 * * @author Administrator * */public class TestTrasaction { public static void main(String[] args) { Connection conn = null; PreparedStatement pstm = null; PreparedStatement pstm1 = null; try { // 获得连接 conn = JdbcUtil.getConnection(); //将JDBC事务设置手动提交 conn.setAutoCommit(false); // ①降职操作 String sql = "updata emp set job = 'clerk' where ename = 'hellen'"; pstm = conn.prepareStatement(sql); pstm.executeUpdate(); // ②降奖金操作 String sql1 = "updata emp set commit='3000' where ename = 'hellen'"; pstm1 = conn.prepareStatement(sql1); pstm1.executeUpdate(); //提交事务 conn.commit(); } catch (Exception e) { //事务回滚 try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { try { JdbcUtil.release(null, pstm, null); JdbcUtil.release(null, pstm1, conn); } catch (Exception e) { e.printStackTrace(); } } }}
롤백
2. JDBC 트랜잭션 제어
(1) JDBC 트랜잭션 소개
기본 트랜잭션 제출 전략: 하나의 명령이 그 자체로 완전한 트랜잭션을 구성합니다.
요구 사항: 각 논리 유닛은 함께 성공하거나 함께 실패합니다. (전송 등)
(2) JDBC 트랜잭션 APIrrreee🎜🎜🎜 두 개의 SQL 문(하나는 맞고 하나는 틀림)을 처리하기 위해 JDBC 트랜잭션이 코드에 추가되었으며 두 SQL 문 모두 실행되지 않았습니다. JDBC 트랜잭션 처리를 추가하지 않으면 올바른 SQL 문 중 하나가 단독으로 실행됩니다. 🎜🎜🎜🎜관련 무료 학습 권장 사항: 🎜🎜🎜mysql 데이터베이스🎜🎜🎜(동영상)🎜🎜🎜rrreee(3) JDBC 트랜잭션 제어 시뮬레이션emp 테이블에서 ename이 hellen인 레코드를 수정하고 리더에서 사무원으로 직업을 변경합니다. ,커밋 보너스가 600에서 300으로 감소합니다.
(시뮬레이션 거래) TrasactionDemo:
위 내용은 MySQL 및 JDBC용 트랜잭션 제어(TCL) 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!