2015-04-28 79 views
0

當我在表X中插入一行時,它會觸發另一個觸發函數,將行插入另一個表Y.當觸發這些觸發器功能的插入操作失敗時,觸發器操作後會發生什麼?

但是,如果第一次插入失敗,那麼其他觸發器函數會發生什麼?
這些觸發功能是否起作用?
我想在觸發之前詢問這個嗎?
如果X表中的before觸發器在向表Y中插入行時失敗,那麼對錶X中的插入是否工作?

+1

觸發器是高度產品特定的。請編輯你的問題併爲你的數據庫系統添加一個標籤(例如[tag:mysql],[tag:sql-server],[tag:oracle]等) –

+0

確定,我添加了postgresql標籤... – cinfis

回答

0

觸發器的任何操作都與引發觸發器的語句在相同的事務中運行。如果「調用事務」被回滾,那麼觸發器所做的任何更改都會被回滾。

+0

謝謝你要回復...在X表上觸發之前,我們使用另一種情況(在插入X表之前將行插入Y表),然後在X表上插入一個插入;如果觸發之前將行插入Y表失敗,如果在觸發失敗之前仍將應用插入X表中的操作? – cinfis

+0

第一個錯誤會中止事務並阻止任何後續觸發器觸發。 –

+0

好的再次感謝... – cinfis