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...