mysql开启事务_MySQL入门之事务(上)
事務
事務介紹
事務的概念
事務指邏輯上的一組操作,組成這組操作的各個單元,要不全部成功,要不全部不成功
數(shù)據(jù)庫開啟事務命令
start transaction 開啟事務 (等同于set autocommit = off )
Rollback 回滾事務
Commit 提交事務
Mysql中使用事務
1.創(chuàng)建表
create table account(
id int primary key auto_increment,
name varchar(20),
money double
);
insert into account values(null,'aaa',1000);
insert into account values(null,'bbb',1000);
insert into account values(null,'ccc',1000);
2、MySQL中事務默認自動提交的,每當執(zhí)行一條SQL,就會提交一個事務 (一條SQL 就是一個事務)
Oracle 中事務默認 不自動提交,需要在執(zhí)行SQL 語句后 通過commint 手動提交事務
3、mysql管理事務
方式一 :同時事務管理SQL 語句
start transaction 開啟事務
rollback 回滾事務 (將數(shù)據(jù)恢復到事務開始時狀態(tài))
commit 提交事務 (對事務中進行操作,進行確認操作,事務在提交后,數(shù)據(jù)就不可恢復)
方式二:數(shù)據(jù)庫中存在一個自動提交變量 ,通過 show variables like '%commit%'; ---- autocommint 值是 on,說明開啟自動提交
關閉自動提交 set autocommit = off / set autocommit = 0
如果設置autocommit 為 off,意味著以后每條SQL 都會處于一個事務中,相當于每條SQL執(zhí)行前 都執(zhí)行 start transaction
補充:Oracle中 autocommit 默認就是 off
Jdbc使用事務
當Jdbc程序向數(shù)據(jù)庫獲得一個Connection對象時,默認情況下這個Connection對象會自動向數(shù)據(jù)庫提交在它上面發(fā)送的SQL語句。若想關閉這種默認提交方式,讓多條SQL在一個事務中執(zhí)行,可使用下列語句:
JDBC控制事務語句
Connection.setAutoCommit(false); // 相當于start transaction
Connection.rollback(); rollback
Connection.commit(); commit
事務特性(ACID)
原子性(Atomicity)
原子性是指事務是一個不可分割的工作單位,事務中的操作要么都發(fā)生,要么都不發(fā)生。
一致性(Consistency)
事務前后數(shù)據(jù)的完整性必須保持一致。
隔離性(Isolation)
事務的隔離性是指多個用戶并發(fā)訪問數(shù)據(jù)庫時,一個用戶的事務不能被其它用戶的事務所干擾,多個并發(fā)事務之間數(shù)據(jù)要相互隔離。
持久性(Durability)
持久性是指一個事務一旦被提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就是永久性的,接下來即使數(shù)據(jù)庫發(fā)生故障也不應該對其有任何影響。
注:多個線程開啟各自事務操作數(shù)據(jù)庫中數(shù)據(jù)時,數(shù)據(jù)庫系統(tǒng)要負責隔離操作,以保證各個線程在獲取數(shù)據(jù)時的準確性
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的mysql开启事务_MySQL入门之事务(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mips j指令_MIPS处理器 MIP
- 下一篇: ctrl键一直自动按住了_请允许Ctrl