程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySql的事務使用與示例詳解

MySql的事務使用與示例詳解

編輯:關於MYSQL數據庫

在MySQL中,事務就是一個邏輯工作單元的一系列步驟。事務是用來保證數據操作的安全性。

事務的特征:

1.Atomicity(原子性)
2.Consistency(穩定性,一致性)
3.Isolation(隔離性)
4.Durability(可靠性)

注:事務只針對對數據數據產生影響的語句有效。

show engines //查看mysql鎖支持的數據引擎

MyISAM不支持事物,InnoDB支持事物

默認情況下,MySQL將以自動提交模式運行,這意味著沒一條小命令都將當做一個只有一條命令的事物來執行。
如果要讓mysql支持支持事務,只需要修改數據引擎(alter table person type=INNODB)
使用start transaction或者begin命令來開啟一個事物,使用commit,或者rollback來結束事物。

事物的結束:事物除了commit,rollback會結束外,使用DDL或者DCL語句也會結束。

保存點:通過保存點機制:用戶可以在事物裡用savepoint name命令設置一些保存點,以後用戶在使用rollback to savepoint name結束事物時,name之前的數據保存,之後的數據不保存。

mysql使用事務的關鍵字
begin //打開一個事務
commit //提交到數據庫
rollback //取消操作
savepoint //保存,部分取消,部分提交
alter table person type=INNODB //修改數據引擎

示例如下:

begin
update person set name='efgh' where id =10
select * from person
rollback
select * from person

示例如下:

alter table person type=INNODB
begin
update person set name='efgh' where id =10
select * from person
commit
select * from person
begin
delete from person where id=21
update person set name='efgh' where id =10
commit/rollback

針對上面部分提交,必須用到保存點

保存點注意:

1.只能取消到某個保存點 rollback to savepoint p1
2.不能提交某個保存 commit to savepoint p2//錯誤寫法
3.最後commit 把未取消的保存點去不提交到數據

事務保存點使用例子:

begin;
update score set score=40 where scoreid=1;
savepoint s1;
update score set score=50 where scoreid=2;
select * from score;
rollback to savepoint s1;
select * from score;
commit;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved