10
A
回答
9
我認爲他們可以用來爲安全性或創建元數據等方面填充單獨的一次性表集合,例如記錄,聚合等。
當您開始更改您的「實時」數據或「循環回」到您的biz信息表中時,那就是當它們變得邪惡和笨拙時。他們對此也完全沒有必要。觸發器沒有任何存儲過程無法做到的事情。
我覺得他們是SQL在編程語言中等同於GOTO的惡魔。合法,但要避免,除非絕對必要,而且它們絕對不是絕對必要的。
+0
謝謝你保羅,但你說他們絕對沒有必要! 有沒有更好的方法使日誌記錄更新,從表中刪除? – 2010-06-30 14:01:48
5
因爲他們是「魔術師」。他們不是很明顯,他們可以做很多工作。
我見過很多優秀的開發人員花費大量時間來追蹤觸發相關的問題,因爲他們只是不想去尋找它們。此外,他們很少需要。
7
當其他功能更合適時,使用數據庫觸發器時會導致數據庫觸發器不良。
檢查約束
外鍵約束
唯一索引/約束
(持久化的)計算列
(:應嘗試使用觸發器前應考慮
特點索引)視圖(如果觸發器正在嘗試類似更新聚合的內容,比如說)
個存儲過程(如果直接訪問表可以禁止)
在這之後,觸發器可以適當地使用而不被「壞」。觸發器應該始終設計爲佔用空間小。
2
這裏有一些文章應該幫助你自己找出你的需求。
- Pros and Cons of Triggers vs. Stored Procedures for Denormalization(SO question);
- Choice Between Stored Procedures, Functions, Views, Triggers, Inline SQL。
簡而言之,當需要進行復雜的DML時,Triggers
對處理海量數據非常有用。要回答你的問題,如果不是這種情況,你可以根據觸發不良的情況得到答案。
相關問題
- 1. H2數據庫觸發器
- 2. Informix數據庫觸發器
- 3. 數據庫死鎖時觸發觸發器
- 4. 將數據插入到數據庫後,JQuery datepicker圖標觸發器被破壞
- 5. SQL服務器:觸發VS數據庫觸發器
- 6. 如何使用codeIgniter按時間更新數據庫觸發器?
- 7. 如何在sql中更改數據庫時執行觸發器
- 8. 使用MySQL數據庫觸發器
- 9. 數據庫觸發器和計算
- 10. Mysql中的跨數據庫觸發器
- 11. 數據庫觸發器,它是異步?
- 12. 數據庫觸發器不保存
- 13. 使用HR數據庫的觸發器
- 14. 數據庫觸發器和Hibernate
- 15. 替換數據庫觸發器機制
- 16. Django版本的數據庫觸發器?
- 17. 數據庫phpmyadmin插入觸發器
- 18. Azure Cosmos /文檔數據庫觸發器
- 19. Magento EE數據庫沒有觸發器
- 20. 數據庫觸發器和JMS
- 21. 觸發兩個數據庫
- 22. 數據觸發器將不會觸發
- 23. 數據觸發器未觸發
- 24. 如何刪除壞觸發
- 25. PostgreSQL數據庫中的時間觸發器
- 26. SQL Server數據庫在觸發器執行時掛起
- 27. 使用時間觸發器修改postgresql數據庫中的值?
- 28. 實時數據庫觸發器與FCM的Firebase通知
- 29. 通過計時器觸發數據庫事件
- 30. 數據更新複製時觸發器不觸發
這是因爲新手在沒有適當的知識的情況下使用它們來知道存在更好的替代方案。 IE:「嘿,我想做X.我知道,我會用一個觸發器......「當檢查或默認約束更好或者更差時 - 外鍵約束 – 2010-06-15 19:28:11
(關於我對這個問題的近距離投票:我知道你已經提出了一些問題不同於我所建議的,但我覺得對另一個問題的答案已經討論了關於數據庫觸發器的正面和負面的事情......不會回答你的問題嗎?) – stakx 2010-06-15 19:30:41
@stakx同意我沒有搜索這個詞是邪惡的 – 2010-06-15 19:35:22