資料庫 Mysql事務詳解

2021-09-08 12:24:01 字數 2630 閱讀 5013

mysql事務

mysql的事務預設是自動提交的,也就是你提交乙個query,他就直接執行!我們可以通過

set autocommit=0

禁止自動提交

set autocommit=1 開啟自動提交

//

mysql事務

#include #include

#include

#include

#include

#define begin_tran "start transaction"

#define set_unauto "set autocommit=0"

#define set_auto "set autocommit=1"

#define commit_tran "commit"

#define rollback_tran "rollback"/**

* mysql_mbegintran - 開啟事務

* @conn:mysql物件指標

* 成功返回0,失敗返回錯誤碼

* */

int mysql_mbegintran(mysql *conn)

//mysql預設事務自動提交,現在設定事務手動提交

ret =mysql_query(conn, set_unauto);

if (ret != 0

)

return

ret;}/*

* * mysql_mrollback - 事務回滾

* @conn:mysql物件指標

* 成功返回0,失敗返回錯誤碼

* */

int mysql_mrollback(mysql *conn)

//恢復mysql執行sql預設提交操作

ret =mysql_query(conn, set_auto);

if (ret != 0

)

return

ret;}/*

* * mysql_mcommit - 事務提交

* @conn:mysql物件指標

* 成功返回0,失敗返回錯誤碼

* */

int mysql_mcommit(mysql *conn)

//恢復mysql執行sql預設提交操作

ret =mysql_query(conn, set_auto);

if (ret != 0

)

return

ret;

}int main(int arg, char *args)

printf(

"connect db server ok !\n");

//設定字符集

if (mysql_query(conn, "

set names utf8

") != 0

)

//開啟事務

if (mysql_mbegintran(conn) != 0

)

//執行多條插入語句

if(mysql_query(conn,

"insert into student (name,passwd,classid) values('小公尺','123',10)")

!= 0

)

if(mysql_query(conn,

"insert into student (name,passwd,classid) values('小紅','123',20)")

!= 0

)

//提交事務

if (mysql_mcommit(conn) != 0

)

//開啟事務

if (mysql_mbegintran(conn) != 0

)

//執行多條插入語句

if(mysql_query(conn,

"insert into student (name,passwd,classid) values('小黑','123',30)")

!= 0

)

if(mysql_query(conn,

"insert into student (name,passwd,classid) values('小飛','123',40)")

!= 0

)

//回滾事務

if (mysql_mrollback(conn) != 0

)

/*關閉mysql連線

*/mysql_close(conn);

return0;

}

.suffixes:.c .o

cc=gcc

srcs=hello.c

objs=$(srcs:.c=.o)

exec=hello

start:$(objs)

$(cc) -o $(exec) $(objs) -lmysqlclient

@echo

"--------ok-------

".c.o:

$(cc) -wall -g -o $@ -c $rm -f $(objs)

rm -f $(exec)

mysql資料庫的事務詳解

1 資料庫的事務四大特性 資料庫事務 transaction 是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。一方面,當多個應用程式併發訪問資料庫時,事務可以在應用程式間提供乙個隔離方法,防止互相干擾。另一方面,事務為資料庫操作序列提供了乙個從失敗恢復正常的方法 原子性 ...

資料庫事務詳解

事務 transaction 是由一系列對系統中資料進行訪問與更新的操作所組成的乙個程式執行邏輯單元。1.原子性 atomicity 事務的原子性是指事務必須是乙個原子的操作序列單元。事務中包含的各項操作在一次執行過程中,只允許出現兩種狀態之一。全部執行成功 全部執行失敗 任何一項操作都會導致整個事...

資料庫事務詳解

事務 transaction 是在同乙個處理單元中,由一系列對資料進行訪問與更新的操作所組成的乙個基本程式執行邏輯單元。資料庫事務其實主要做了以下兩方面的事 事務具有4個基本特徵,分別是 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 duration...