C# 用sql insert into 語句向oracle插入數據數據一直未更新

參考一下說明:少了一個commit語句。
DML語言,比如update,delete,insert等修改表中數據的需要commit;
DDL語言,比如create,drop等改變表結構的,就不需要寫commit(因爲內部隱藏了commit);

DDL 數據定義語言:
create table 創建表   
alter table 修改表   
drop table 刪除表   
truncate table 刪除表中所有行   
create index 創建索引   
drop index 刪除索引
當執行DDL語句時,在每一條語句前後,oracle都將提交當前的事務。如果用戶使用insert命令將記錄插入到數據庫後,執行了一條DDL語句(如create
table),此時來自insert命令的數據將被提交到數據庫。當DDL語句執行完成時,DDL語句會被自動提交,不能回滾。

DML 數據操作語言:
insert 將記錄插入到數據庫  
update 修改數據庫的記錄  
delete 刪除數據庫的記錄
當執行DML命令如果沒有提交,將不會被其他會話看到。除非在DML命令之後執行了DDL命令或DCL命令,或用戶退出會話,或終止實例,此時系統會自動
發出commit命令,使未提交的DML命令提交。
Oracle數據庫裏面有DCL語句(Data Control Language),一共有四個關鍵字,commit、rollback、grant和revoke。它們執行的時候,你都不會有什麼感覺。commit在數據庫編程的時候很常用,當你執行DML操作時,數據庫並不會立刻修改表中數據,這時你需要commit,數據庫中的數據就立刻修改了,如果在沒有commit之前,就算你把整個表中數據都刪了,如果rollback的話,數據依然能夠還原。
oracle的commit就是提交數據(這裏是釋放鎖不是鎖表),在未提交前你前面的操作更新的都是內存,沒有更新到物理文件中。
執行commit從用戶角度講就是更新到物理文件了,事實上commit時還沒有寫date file,而是記錄了redo log file,要從內存寫到data物理文件,需要觸發檢查點,由DBWR這個後臺進程來寫,這裏內容有點多的,如果不深究的話你就理解成commit即爲從內存更新到物理文件。

發佈了61 篇原創文章 · 獲贊 33 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章