一個項目需要我建立一個Java應用程序,允許用戶快速創建,更新和刪除人工報告(以前由人工完成)。外鍵級聯選項和創建觸發器有什麼區別?
我顯然需要爲這個數據庫,並花了過去一週研發和設計緩慢,但不能似乎明確界定什麼使得外鍵級聯選項,創建觸發器之間的差異。他們與衆不同嗎?或者只有兩種方法來完成我的案例中的相同任務?
我問這個,因爲是要在一個表中的特定字段更改在引用它所有相關表中反映出來。
我使用MySQL和MySQL工作臺建模和最終的正向工程。
一個項目需要我建立一個Java應用程序,允許用戶快速創建,更新和刪除人工報告(以前由人工完成)。外鍵級聯選項和創建觸發器有什麼區別?
我顯然需要爲這個數據庫,並花了過去一週研發和設計緩慢,但不能似乎明確界定什麼使得外鍵級聯選項,創建觸發器之間的差異。他們與衆不同嗎?或者只有兩種方法來完成我的案例中的相同任務?
我問這個,因爲是要在一個表中的特定字段更改在引用它所有相關表中反映出來。
我使用MySQL和MySQL工作臺建模和最終的正向工程。
觸發器可以運行任意代碼。你可能通過觸發器實現外鍵(有或沒有級聯)。
外鍵(有或沒有級聯)完成一項特定的工作。在大多數數據庫系統中,您將無法編寫比支持外鍵的代碼更高效的觸發器(有很多方法可以編寫效率更低的觸發器)。
對於MySQL而言,您可能需要考慮它支持多個存儲引擎,並且不同引擎在支持各種外鍵功能方面存在差異(請參閱Using FOREIGN KEY
constraints。如果您打算使用的引擎不支持要使用該功能,那麼你別無選擇,只能使用觸發器
感謝@Damien_The_Unbeliever如果我想測試/學習如何將外鍵約束纔會真正效果。我的表通過手動插入和編輯行,ca n我只是在我的數據模型中從MySQL Workbench中完成這項工作;或者,我是否需要首先轉發它? –
@solleks - 我遠不是這方面的專家 - 也許是對這個問題尋求或者提出一個單獨的問題? –
@ Damien_The_Unbeliever-好的,感謝您的時間和幫助! –
您還可能感興趣的:[數據庫FK約束VS編程FK約束(http://stackoverflow.com/a/20777244/ 533120) –
而在:[的Sql - 間接外鍵(http://stackoverflow.com/a/20873843/533120) –