2017-04-07 78 views
2

我有一個表有兩個屬性:ID &創建該記錄的日期時間。我怎樣才能讓一個觸發器(過程?)在1天之後刪除記錄?SQL Server:自動在一段時間後刪除記錄?

編輯:在標題中添加了「自動」,這意味着我需要一個每X時間執行一次的任務,而不是手動執行。

+0

觸發器就像事件,它們在動作發生時觸發(即插入,更新,刪除)。你在談論的是一個時間表任務。通常在SQL Server中,您將創建一個過程來刪除所需的行。然後創建一個sql作業在給定的時間表上運行以執行該過程。 –

回答

0

語句刪除記錄的年齡超過一天的時間:

DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1 

您需要與cron使用任何語言,你有可用,例如PHP的發言。

那說,當然這是很難想象這樣一個場景,你會想刪除擺在首位記錄;)

+0

謝謝!你能簡單解釋一下-1部分嗎?另外,是否有可能讓它每天自動執行?我聽到一個叫做SQL Job的東西,但我不確定。 – concretejungle

+0

關於這種情況,它是關於通過電子郵件發送的忘記密碼鏈接 - 鏈接應該在一段時間後過期 – concretejungle

+0

負號等於「一天前」(ergo昨天):) – mayersdesign

2

我建議你使用SQL Server代理和寫刪除該日期已過一天,每行的存儲過程。

你可以找到如何在這裏使用SQL Server代理作業:

https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job

和存儲過程,如:

CREATE PROCEDURE DeleteRows() 
AS 
BEGIN 
DELETE FROM mytable 
WHERE (DATEDIFF(DAY, DATEADD(day, -1, DateColum), GETDATE())) >= 1 
END 
編輯

: 數字1在聲明是幾天。您可以將其更改爲您想要使用的內容。

+0

非常酷的東西 – mayersdesign

+0

這就是我需要的,謝謝! – concretejungle

+0

不客氣。我建議閱讀關於sql作業的更多內容,這樣你就可以用最好的方式使用它。 –