我需要一個DB,我在工作的一些建議。約束雙重檢查
我有DB,現在我的工作過程,函數和觸發器(PL/SQL )。有三個實體,其中兩個從第三個實體繼承(按照概念數據模型),所以這意味着有兩個表引用第三個實體。我必須同時在「父」表和「子」表中插入數據,所以我想過在父表中插入一個過程,而另一個插入到子表中,可以調用前一個。
我的問題是,如果我試圖插入到父表中,然後再插入到子表中,並且由於某種原因我將數據插入到不滿足約束條件的子表中,會發生什麼?換句話說,儘管有這些限制,我還是還有必須驗證函數中的輸入數據嗎?你有什麼建議?
是的,有外鍵約束,但這不是重點,而是剩下的表約束。例如,假設我有這張表,並且它有一定的CHECK約束。如果我在第二個表中插入數據(在第一個表中成功插入數據之後),並由於某種原因拋出異常,因爲它違反了約束,數據將記錄在第一個表中,而不是第二個表中的數據。這就是我所擔心的。 – 2012-02-25 02:02:28
@ user1231958 - 這是事務邊界的用途。如果插入到子表中失敗並且您不希望插入到父表中,除非兩個插入操作都成功,否則如果插入到子表中的過程拋出異常而不是拋出異常,則應用程序將簡單地發出回滾發出提交。 – 2012-02-25 02:19:06
我是否必須發出回滾指令,還是自動執行?如果我在一個過程中的一個表中插入一個插入,然後從另一個過程調用它,如何?程序A - >調用程序B - >程序B插入並返回 - >程序A插入。另外還有 – 2012-02-25 02:26:10