關於主外來鍵表資料提交過程中的一點疑惑
關於主外來鍵表資料提交過程中的一點疑惑
一直有疑問,Oracle是基於事務的,事務內的所有操作必須一次性提交,要麼成功要麼失敗。
建了一張簡單的主表和引用表,如果分開插入資料並提交當然是沒問題的,問題就在於放在一個事務內去提交的話,假設主表先插資料,但是應該還沒有寫入到資料庫中,然後再引用表中再插入資料,為什麼能夠一次性提交成功或者失敗呢? 還沒有寫到主表中,當然寫引用表的時候會缺乏關聯關係啊,不過事實上已經成功了
還有類似的操作
例如
Insert into temptable select 1 from onetable;
Insert into temptable select count(*) from temptable;
事實上已經按照順序寫入了
一直有疑問,Oracle是基於事務的,事務內的所有操作必須一次性提交,要麼成功要麼失敗。
建了一張簡單的主表和引用表,如果分開插入資料並提交當然是沒問題的,問題就在於放在一個事務內去提交的話,假設主表先插資料,但是應該還沒有寫入到資料庫中,然後再引用表中再插入資料,為什麼能夠一次性提交成功或者失敗呢? 還沒有寫到主表中,當然寫引用表的時候會缺乏關聯關係啊,不過事實上已經成功了
還有類似的操作
例如
Insert into temptable select 1 from onetable;
Insert into temptable select count(*) from temptable;
事實上已經按照順序寫入了
-- Create table create table ChildTable ( ID number(20,0), Name Varchar2(20) ); -- Create/Recreate primary, unique and foreign key constraints alter table ChildTable add constraint ChildTablePrimarykey primary key (ID); -- Create table create table MainTable ( ID number(20,0), ForeignID number(20,0), Name Varchar2(20) ); -- Create/Recreate primary, unique and foreign key constraints alter table MainTable add constraint MainTablePrimarykey primary key (ID); -- Create/Recreate primary, unique and foreign key constraints alter table MAINTABLE add constraint MainTableForeignKEY foreign key (ForeignID) references ChildTable (ID); INSERT INTO ChildTable VALUES(1,'ChildA'); COMMIT; INSERT INTO MainTable VALUES(1,1,'MainA'); COMMIT; -- Created on 2008-1-9 by bq_wang BEGIN -- Test statements here SAVEPOINT do_insert; INSERT INTO ChildTable VALUES(2,'ChildA'); INSERT INTO MainTable VALUES(2,2,'MainA'); COMMIT WORK ; EXCEPTION WHEN OTHERS THEN ROLLBACK TO do_insert; DBMS_OUTPUT.put_line('ERROR'); END; |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-134193/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫的主外來鍵關係資料庫
- MySQL建立資料表並建立主外來鍵關係MySql
- MySQL 檢視資料庫中有主外來鍵關係的表資訊MySql資料庫
- sql 查詢 主外來鍵的 一點心得SQL
- 求主外來鍵的關係
- 關於主外來鍵關係DML父表和DML子表加鎖方式
- ORACLE查詢表之間的主外來鍵關係Oracle
- Oracle 查詢表與表之間的 主外來鍵關係Oracle
- 檢視主外來鍵關係
- mysql主外來鍵依賴關係MySql
- 求主外來鍵的關係的指令碼(ZT)指令碼
- 直播系統開發過程中的一些關鍵點
- oracle 主外來鍵關係及實驗Oracle
- 關於Spring控制器的一點點疑惑Spring
- EntityFramework Core 遷移忽略主外來鍵關係Framework
- EF Code First中的主外來鍵約定和一對一、一對多關係的實現
- 為什麼在資料倉儲中很少使用主外來鍵約束
- 批量刪除MSSQL 中主外來鍵約束SQL
- 關於color modeling的一點疑惑
- 主外來鍵約束之主表插入未提交導致外來鍵表插入hang住的等待事件 TX-row lock contention事件
- 學習過程中,專案檔案、程式碼疑惑點
- 看jdon原始碼關於依賴反射的一點疑惑原始碼反射
- js中new關鍵字的使用過程JS
- 關於儲存過程中不能操作其他使用者表資料的問題解決儲存過程
- c3p0使用過程中的一些疑惑
- js關於this的疑惑JS
- mysql 關於大資料量日誌表的優化過程MySql大資料優化
- 把一個資料表中的資料匯入另一個表,觸發器和儲存過程的觸發器儲存過程
- 關於Docker中網路效能疑惑Docker
- 轉載 關於資料庫表的主鍵和業務系統中流水號的一點探討資料庫
- 關於http get和form表單post提交資料大小限制HTTPORM
- CIO指南:CIO在打造未來工作過程中的6個關鍵作用
- 關於 sqlmap 注入的疑惑,sqlmap 是如何拿到資料庫資料的呢?SQL資料庫
- 關於領域驅動設計與開發過程中的一些疑惑請道友幫忙解惑,謝謝。
- mysql 關於大資料量日誌表的最佳化過程MySql大資料
- 主外來鍵關聯刪除(on delete set null和on delete cascade)deleteNull
- 關於學習過程中走過的彎路
- 關於介面的一些疑惑