2014-08-29 105 views
0

我有一個表TrainingT_StartDateT_EndDate等。現在我想要如果保存T_EndDate與今天的日期相匹配,我希望該列的記錄應該自己刪除。爲此,我在程序中編寫了一些代碼,但我認爲這不會像預期的那樣工作,因爲程序無法自動啓動。 因此,我從互聯網上讀到這個問題,我需要一個觸發器來做這種功能。但對觸發沒有太多的想法。 那麼請告訴我我該怎麼做? 另外我附上了我的桌子的圖片,讓你們瞭解結構。 在此先感謝如何在條件滿足時自動啓動Sql語句?

enter image description here

+0

你爲什麼要刪除記錄?爲什麼不只是有一個「NoLongerValid」標誌或類似的東西呢? – 2014-08-29 12:02:14

+0

是的!這會很好,如果我更新我的表並將標誌設置爲false。但沒有想法這樣做或自動查詢。 #Gordan Linoff – 2014-08-29 12:04:44

回答

0

只需添加一個計算列:

create view v_Training as 
    select t.* 
    from Training 
    where IsValid = 1; 

然後,您可以:

alter table Training add IsValid as (case when t_enddate < cast(getdate() as date) then 1 else 0 end) 

然後,您可以使用此列或使用視圖訪問表在您的閒暇時間刪除行 - 每月一次,每週一次。

否則,您需要設置一個作業,運行在正好午夜。否則,會有一段時間數據無效。而且,如果您因某種原因錯過了更新,則可能會出現問題。