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