我有一個表有兩個屬性:ID &創建該記錄的日期時間。我怎樣才能讓一個觸發器(過程?)在1天之後刪除記錄?SQL Server:自動在一段時間後刪除記錄?
編輯:在標題中添加了「自動」,這意味着我需要一個每X時間執行一次的任務,而不是手動執行。
我有一個表有兩個屬性:ID &創建該記錄的日期時間。我怎樣才能讓一個觸發器(過程?)在1天之後刪除記錄?SQL Server:自動在一段時間後刪除記錄?
編輯:在標題中添加了「自動」,這意味着我需要一個每X時間執行一次的任務,而不是手動執行。
語句刪除記錄的年齡超過一天的時間:
DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1
您需要與cron使用任何語言,你有可用,例如PHP的發言。
那說,當然這是很難想象這樣一個場景,你會想刪除擺在首位記錄;)
謝謝!你能簡單解釋一下-1部分嗎?另外,是否有可能讓它每天自動執行?我聽到一個叫做SQL Job的東西,但我不確定。 – concretejungle
關於這種情況,它是關於通過電子郵件發送的忘記密碼鏈接 - 鏈接應該在一段時間後過期 – concretejungle
負號等於「一天前」(ergo昨天):) – mayersdesign
您可以創建一個SQL工作有一天,當你想(或每日後運行。 )並執行一個帶有簡單刪除語句的指定存儲過程。
按照下一個主題: -
我建議你使用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在聲明是幾天。您可以將其更改爲您想要使用的內容。
非常酷的東西 – mayersdesign
這就是我需要的,謝謝! – concretejungle
不客氣。我建議閱讀關於sql作業的更多內容,這樣你就可以用最好的方式使用它。 –
觸發器就像事件,它們在動作發生時觸發(即插入,更新,刪除)。你在談論的是一個時間表任務。通常在SQL Server中,您將創建一個過程來刪除所需的行。然後創建一個sql作業在給定的時間表上運行以執行該過程。 –