我有以下表SQL Server 2008 - 基於子值,切換表中的值。觸發器或計算列與子查詢?
父表
ds_id(pk) /state
-------------------------
1. / valid
2. / invalid
子表
d_id(pk)/ ds_id(fk)/approve
-----------------------------------------
1. / 1. / false
2. / 1. / true
3. / 2. / false
4. / 2. / false
父表的state
欄會變爲有效,如果其子之一子表的批准列設置爲true
我想找到最簡單最有效的方法來計算和設置基於其子級的狀態列。
我正在使用SQL Server 2008.
狀態的變化需要是即時的。
預計系統將有幾千父母,每個父母約有5個孩子。
它更可能是您沒有提供足夠的信息來決定的「最佳」的方法是什麼,孩子就被更新
基本上你想要parentTable.IsValid = Max(childTable.approve)(如果任何一個孩子的屬性爲true,則返回true)。將有效標誌存儲在父表中並維護該關係的價值是什麼?從應用程序的代碼中計算父表的狀態還是通過存儲過程返回它會更好? – 2012-08-19 19:56:28
我從來沒有考慮過不存儲的價值,感謝指出的可能性。但是這需要我每次想要使用它時計算狀態。例如基於狀態隱藏一個按鈕。 – 2012-08-19 20:05:01
@MitchellLee:有效,但取決於邏輯以及如何實現。這就是我首先對事物進行建模的方式,但是對於存儲值進行建模 - 測試並比較性能來決定。當存在實際的客戶數據時重新審視該問題......有時存儲該值的效果會更好。 – 2012-08-19 20:08:54