示例代碼: https://gist.github.com/telagraphic/be35fd3506f912c7a91c使用情況發現外鍵與觸發器或函數
我有一個投擲的列的數據類型約束的觸發器。 有道理,爲什麼它會拋出錯誤,但我認爲觸發器會在插入之前更新值。
我發現了在插入中使用函數來檢索外鍵的替代解決方案。
我的問題是有可能使用觸發器來查找和插入外鍵?或者是一個函數的首選方法?
示例代碼: https://gist.github.com/telagraphic/be35fd3506f912c7a91c使用情況發現外鍵與觸發器或函數
我有一個投擲的列的數據類型約束的觸發器。 有道理,爲什麼它會拋出錯誤,但我認爲觸發器會在插入之前更新值。
我發現了在插入中使用函數來檢索外鍵的替代解決方案。
我的問題是有可能使用觸發器來查找和插入外鍵?或者是一個函數的首選方法?
看着你的代碼,我想你正在試圖將INSERT的類別字段填充到EXPENSES表中,這是基於CATEGORIES表中使用類別名稱的ID。
如果我明白這個權利,那麼你應該在你的解決方案中使用該函數而不是觸發器。當在表上執行DML語句(INSERT,UPDATE,DELETE)時(這裏是CATEGORIES表),觸發器只會被調用或觸發。由於您插入到EXPENSES表中,CATEGORIES表上的觸發器將不會被調用。
此外,通常您通常在關係中的父表上使用觸發器來更新/填充該關係中的子表。我認爲在你的情況下,你正在嘗試做相反的事情,因爲看起來費用是CATEGORY_ID字段上的CATEGORIES的孩子。
希望這會有所幫助。
謝謝,這確實說明了。這是兩張桌子之間的一對一關係。親子關係有助於解釋爲什麼要使用觸發器。 – nick