mysql自動提交的概念 MySQL入門之事務概念

2021-10-17 19:40:30 字數 4111 閱讀 8987

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

set autocommit=0 禁止自動提交

set autocommit=1開啟自動提交

mysql中innodb引擎才支援事務處理,預設是自動提交的;

另外一種常用的myisam引擎是不支援事務的,本身就沒有事務的概念 .

可模擬oracle事務的概念!!!

能夠避免mysql的自動提交,自己封裝api以後實現回滾等操作!!!#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

mysql set autocommit = 0或1分別什麼啊,哪個是自動提交啊

要熟練使用mysql的幫助文件,在裡面查詢autocommit,就會有相應的注釋,比我在這裡直接給你說要深刻得多。

autocoomit是事務,根據mysql的文件如果等於1是立即提交。但在transction中只有遇到commit或rollback才提交。希望對你有用。

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

set autocommit=0 禁止自動提交

set autocommit=1 開啟自動提交

mysql中innodb引擎才支援事務處理,預設是自動提交的;

另外一種常用的myisam引擎是不支援事務的,本身就沒有事務的概念

#define begin_tran "start transaction"

#define set_tran "set autocommit=0"

#define unset_tran "set autocommit=1"

#define commit_tran "commit"

#define rollback_tran "rollback"

int mysql_begintran(mysql *mysql)

int ret = 0;

//--執行事務開始sql

ret = mysql_query(mysql, begin_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

//--設定事務手動提交

ret = mysql_query(mysql, set_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

return ret;

int mysql_rollback(mysql *mysql)

int ret = 0;

//--事務回滾操作

ret = mysql_query(mysql, rollback_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

//--恢復事務自動提交標誌

ret = mysql_query(mysql, unset_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

return ret;

int mysql_commit(mysql *mysql)

int ret = 0;

//--執行事務提交sql

ret = mysql_query(mysql, commit_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

//--恢復自動提交設定

ret = mysql_query(mysql, unset_tran);

if (ret != 0)

printf("func mysql_query() err: %d\n", ret);

return ret;

return ret;

// 建表 create table test_table(col1 int, col2 varchar(10), col3 varchar(10));

#define sql01 "insert into test_table(col1,col2,col3) values(10, '10', '1')"

#define sql02 "insert into test_table(col1,col2,col3) values(20, '20', '2')"

#define sql03 "insert into test_table(col1,col2,col3) values(30, '30', '3')"

#define sql04 "insert into test_table(col1,col2,col3) values(40, '40', '4')"

int main()

int ret = null;

mysql *mysql;

mysql_res *res;

mysql_row row;

char *query;

mysql = mysql_init(null);

mysql =mysql_real_connect(mysql, "localhost", "root", "123456", "mydb2", 0, null, 0 );

if (mysql == null)

ret = mysql_errno(mysql);

printf("func mysql_real_connect() err\n");

return ret;

else

printf(" ok......\n");

ret = mysql_begintran(mysql);

if (ret != 0)

printf("mysql_begintran() err:%d\n", ret);

return ret;

ret = mysql_query(mysql, sql01);

if (ret != 0)

printf("mysql_query() err:%d\n", ret);

return ret;

ret = mysql_query(mysql, sql02);

if (ret != 0)

printf("mysql_query() err:%d\n", ret);

return ret;

ret = mysql_commit(mysql);

if (ret != 0)

printf("mysql_commit() err:%d\n", ret);

return ret;

ret = mysql_begintran(mysql);

if (ret != 0)

printf("mysql_begintran() err:%d\n", ret);

return ret;

ret = mysql_query(mysql, sql03);

if (ret != 0)

printf("mysql_query() err:%d\n", ret);

return ret;

ret = mysql_query(mysql, sql04);

if (ret != 0)

printf("mysql_query() err:%d\n", ret);

return ret;

ret = mysql_rollback(mysql);

if (ret != 0)

printf("mysql_rollback() err:%d\n", ret);

return ret;

mysql_close(mysql);

MySQL的自動提交模式

預設情況下,mysql啟用自動提交模式 變數autocommit為on 這意味著,只要你執行dml操作的語句,mysql會立即隱式提交事務 implicit commit 這個跟sql server基本是類似的。檢視autocommit模式 由於變數autocommit分 會話系統變數與全域性系統變...

mysql的自動提交的設定

問題1 如何檢視mysql的自動提交的設定?select autocommit 檢視預設提交的狀態是否是自動提交 0手動提交 1 自動提交 問題2 怎麼設定autocommit set autocommit 0 設定的是本次mysql 視窗的自動提交取消,不影響別的連線的自動提交 檢視怎麼鎖定了行鎖...

定時備份mysql指令碼 每天自動備份mysql指令碼

下面是程式設計之家 jb51.cc 通過網路收集整理的 片段。1 執行 crontab e 00 00 bin bash yourpath mysqlbak.sh 2 開啟自動執行檔案 vi etc crontab 在etc中加入如下內容,讓其自動執行任務。00 00 root mysqlbak.s...