我的第一感覺是,事務(wù)沒有提交!
創(chuàng)新互聯(lián)公司專注于盂縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供盂縣營銷型網(wǎng)站建設(shè),盂縣網(wǎng)站制作、盂縣網(wǎng)頁設(shè)計、盂縣網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造盂縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供盂縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
后面發(fā)現(xiàn),原來PL/SQL Developer 默認(rèn)是不會自動提交事務(wù)的!
那自能手動提交或者設(shè)置成自動提交事務(wù)!
打開PL/SQL Developer,
英語界面:Tools - Preferences - Window Types - SQL Window:勾選“AutoCommit SQL”,
中文是:工具- 首選項 - 窗口類型 - SQL窗口 - 勾選“自動提交sql”
最后點擊確定,即可實現(xiàn)自動提交操作
退出登錄自動提交
英文:Tools - Preferences - Oracle - Connection - Log off with open transaction:選擇“Commit”。
中文:工具- 首選項 -Oracle - 注銷(有打開的事務(wù)) - 選擇提交
現(xiàn)在,無論是執(zhí)行sql,還是注銷用戶,都會自動提交事務(wù)啦
MySQL默認(rèn)操作模式就是autocommit自動提交模式。這就表示除非顯式地開始一個事務(wù),否則每個查詢都被當(dāng)做一個單獨(dú)的事務(wù)自動執(zhí)行。我們可以通過設(shè)置autocommit的值改變是否是自動提交autocommit模式。
通過以下命令可以查看當(dāng)前autocommit模式
mysql show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.04 sec)
從查詢結(jié)果中,我們發(fā)現(xiàn)Value的值是ON,表示autocommit開啟。我們可以通過以下SQL語句改變這個模式
mysql set autocommit = 0;
值0和OFF都是一樣的,當(dāng)然,1也就表示ON。通過以上設(shè)置autocommit=0,則用戶將一直處于某個事務(wù)中,直到執(zhí)行一條commit提交或rollback語句才會結(jié)束當(dāng)前事務(wù)重新開始一個新的事務(wù)。
舉個例子:
張三給李四轉(zhuǎn)賬500元。那么在數(shù)據(jù)庫中應(yīng)該是以下操作:
1,先查詢張三的賬戶余額是否足夠
2,張三的賬戶上減去500元
3,李四的賬戶上加上500元
以上三個步驟就可以放在一個事務(wù)中執(zhí)行提交,要么全部執(zhí)行要么全部不執(zhí)行,如果一切都OK就commit提交永久性更改數(shù)據(jù);如果出錯則rollback回滾到更改前的狀態(tài)。利用事務(wù)處理就不會出現(xiàn)張三的錢少了李四的賬戶卻沒有增加500元或者張三的錢沒有減去李四的賬戶卻加了500元。
MySQL默認(rèn)的存儲引擎是MyISAM,MyISAM存儲引擎不支持事務(wù)處理,所以改變autocommit沒有什么作用。但不會報錯,所以要使用事務(wù)處理的童鞋一定要確定你所操作的表示支持事務(wù)處理的,如InnoDB。如果不知道表的存儲引擎可以通過查看建表語句查看建表的時候有沒有指定事務(wù)類型的存儲引擎,如果沒有指定存儲引擎默認(rèn)則是MyISAM不支持事務(wù)的存儲引擎。
當(dāng)然,事務(wù)處理是為了保障表數(shù)據(jù)原子性、一致性、隔離性、持久性。這些都是要消耗系統(tǒng)資源的,要謹(jǐn)慎選擇。
如何設(shè)置mysql的DDL語句不自動提交
首先,要看你的表是MYISAM還是INNODB
MYISAM rollback 是沒有用的,因為不支持事務(wù),不能回滾。
INNODB rollback 可以回滾。
還有注意的是,mysql默認(rèn)的是自動提交的。
所以即使你使用的是innodb,比如delete了一行數(shù)據(jù),沒有commit(系統(tǒng)自動commit了),你rollback也不回恢復(fù),除非你把自動提交關(guān)閉了set autocommit=0。
分享名稱:mysql怎么不提交事務(wù) mysql不開啟事務(wù)會加鎖嗎
轉(zhuǎn)載來源:http://newbst.com/article10/doihhgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)頁設(shè)計公司、網(wǎng)站排名、、定制開發(fā)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)