我的問題主要關注「什麼是最好的表現」,但有點「哲學」說話(如果它有所作爲)......所以讓我們跳吧[TableA]。[ColumnB]存儲需要存在於[TableC] [ColumnD]中的值。 沒有涉及外鍵的答案 - 只是假設他們在這種環境中「不允許」出於任何原因。因爲「情況x,y,z」,[TableA]。[ColumnB]有時會得到[TableC]。[ColumnD]中不存在的值,因爲假設[TableA]從一個存在於運行代碼中的對象作爲「序列化blob」,數據的內存中表示形式以及[ColumnB]值在從[TableC]。[ColumnD]被其他進程刪除之前被填充。無論如何,這只是一個例子,所以不要陷入「爲什麼會發生這種情況」,只是接受它而已。SQL Server - 插入觸發器與每分鐘作業
要「解決」問題,哪種方法最適合這兩種方法:1.在[TableA]上觸發on-INSERT的Trigger,將[ColumnB]更新爲它應該的值(並假設I有一個「壞到好」值的「映射」)。或者,2.每小時/分鐘/運行一個計劃任務更新查詢以將所有可能的「壞」值更改爲其相應的「良好」值。
更一般地說,有什麼更好的性能和/或什麼是最佳實踐:觸發器或定期預定作業?在上下文中,假設[TableA]的數量通常在數十萬行的數量級上,Inserts每次發生10-100條記錄,每隔幾分鐘一次,甚至每天幾次。
謝謝大家!觸發它......我不興奮地在20多個不同的DB上創建一個,但是,這就是生活。 – NateJ 2012-04-18 17:29:46