2012-05-29 55 views
0

我有一個表稱爲設置與columnA,columnB,columnC,columnD,columnE及其值如下:SQL觸發器在給定的時間更新列值期間

columnA = 1000 columnB = 100 columnC = 200 columnD = 18 columnE = 6

我想在時間爲18pm到6am之間更改columnA/B/C中的值。

我想通過查看時間戳更新值的某種觸發器,但我不知道該怎麼做。有任何想法嗎?

+0

只有在對錶執行限定語句時纔會調用觸發器。您可能想要構建SQL代理作業並在特定時間執行它 – Dave

+0

表有多少行? –

+0

它只有1行:)有更多的專欄,然後我張貼的5,但他們是不相關的。 –

回答

0

如果您可以控制應用程序讀取表格,那麼您可以創建一個視圖來檢查時間並返回所需的值嗎?

喜歡的東西:

SELECT 
    [COLUMN1], 
    CASE 
    WHEN DATEPART("hh", GETDATE()) BETWEEN 6 AND 14 THEN 1 
    ELSE [COLUMN2] END AS [COLUMN2], 
    [COLUMN3] 
FROM [TABLE1] 

編輯:

如果要查詢通過應用程序中內置SQL表,你可以改變SQL查詢返回與上面的CASE這些值:

CASE 
    WHEN DATEPART("hh", GETDATE()) BETWEEN 6 AND 14 THEN 1 
    ELSE [COLUMN2] END AS [COLUMN2], 
+0

從數據庫中讀取和寫入的應用程序也是我創建的。 –

+0

您應該能夠將讀取重定向到視圖並回寫到表格,這取決於如何設置所有內容。擁有始終返回正確值的視圖將刪除可能失敗的一個步驟(如SQL代理)。 – bendataclear