有沒有辦法在Transact-SQL中創建後24小時自動刪除一行?插入後24小時刪除記錄
我正在創建一個網站(學習體驗),用戶在註冊後需要單擊通過電子郵件發送的驗證鏈接。我希望用戶在24小時內驗證自己。
我想我需要的是一個觸發器,但我真的不知道的語法,也不是如果它甚至是可能的。
有沒有辦法在Transact-SQL中創建後24小時自動刪除一行?插入後24小時刪除記錄
我正在創建一個網站(學習體驗),用戶在註冊後需要單擊通過電子郵件發送的驗證鏈接。我希望用戶在24小時內驗證自己。
我想我需要的是一個觸發器,但我真的不知道的語法,也不是如果它甚至是可能的。
我不確定你的模式,但我會以不同的方式做。我會對與驗證鏈接相對應的數據庫記錄有一個日期/時間。當他們點擊鏈接時,確認數據庫記錄的日期和時間在當前時間的24小時內。如果是這樣,允許它,否則拒絕它。
問:是否有辦法在Transact-SQL中創建後24小時自動刪除行?答:當然可以。寫「SQLCMD」腳本,在.bat文件紙包起來,然後從Windows調用它計劃任務:
另外,根據您的版本,你可以安排在同一SQL腳本從SQL Server代理:
把不同旋轉東西:
在任何情況下 - 你絕對,完全,完全,做不是想要使用觸發器!
爲什麼我不想使用觸發器?他們是如此的邪惡以至於他們應該被拋棄在一個被遺忘的角落? – Netfangled
不可以。但是他們非常邪惡,因爲這個問題你應該放棄一個房子的想法(像Dorothy在「綠野仙蹤」中對東方的邪惡女巫所做的那樣);觸發器非常適合一些問題......對於這個問題很荒謬。 *正確*解決方案是當用戶點擊鏈接時執行操作(正如我在我的文章中所建議的那樣)。恕我直言... – paulsm4
+1。爲了解決實際問題,而不是解決問題的方法。 –
注意:將行標記爲無效允許您告訴人們此鏈接已過期(如果已過期)或「此鏈接無效」(如果它不存在)。我假設你正在使用某種獨特的密鑰(如GUID)來確保人們無法猜到重置令牌 –
甚至不需要將行標記爲無效。您可以通過日期/時間確定有效性。 – Lock