2017-04-13 186 views
0

我需要一個動態列,以便根據從現在到日期列Expiration Date之間的天數來計算列DaysToExpirationSQL Server:在SELECT上觸發觸發器? (計算列)

我的計劃是在表格的SELECT聲明中添加一個觸發器。

  1. 這可能嗎?怎麼樣?
  2. 有沒有更好的方法來解決這個問題?
+1

是的,一個計算列將是一個更好的選擇IMO – Lamak

+1

表中的視圖是要走的路,創建一個觸發器來存儲信息的其他地方,甚至有一個計算列來顯示DaysToExpiration似乎是一個過度殺手,有些甚至可能會違反數據庫規範化規則。 –

+0

@ M.Ali一個觀點是一個好主意。但我很好奇,你爲什麼認爲它會和計算列不同?爲什麼你認爲它更好? – Lamak

回答

0

不,沒有規定在SELECT操作上有觸發器。您可以使用存儲過程,它接受從SELECT查詢中提取的參數,並在所需的SELECT查詢後調用此過程。

1

你說:「我的計劃是添加一個觸發器在表的SELECT語句上觸發。」

在那種情況下,爲什麼要有一個列,爲什麼不在最終查詢中選擇呢?

Select DateDiff(day,getdate(),ExpirationDate) AS [DaysToExpiration] 

如果它必須被保存並存儲在一列中,那麼你可以使它成爲一個計算列,如評論中所建議的那樣。或者,您可以在UPDATE/INSERT上觸發表格,以便在插入或更新ExpirationDate時將DaysToExpiration列設置爲所提供代碼的結果。