2012-12-22 154 views
0

有沒有辦法在Transact-SQL中創建後24小時自動刪除一行?插入後24小時刪除記錄

我正在創建一個網站(學習體驗),用戶在註冊後需要單擊通過電子郵件發送的驗證鏈接。我希望用戶在24小時內驗證自己。

我想我需要的是一個觸發器,但我真的不知道的語法,也不是如果它甚至是可能的。

回答

17

我不確定你的模式,但我會以不同的方式做。我會對與驗證鏈接相對應的數據庫記錄有一個日期/時間。當他們點擊鏈接時,確認數據庫記錄的日期和時間在當前時間的24小時內。如果是這樣,允許它,否則拒絕它。

+2

+1。爲了解決實際問題,而不是解決問題的方法。 –

+3

注意:將行標記爲無效允許您告訴人們此鏈接已過期(如果已過期)或「此鏈接無效」(如果它不存在)。我假設你正在使用某種獨特的密鑰(如GUID)來確保人們無法猜到重置令牌 –

+2

甚至不需要將行標記爲無效。您可以通過日期/時間確定有效性。 – Lock

2

問:是否有辦法在Transact-SQL中創建後24小時自動刪除行?答:當然可以。寫「SQLCMD」腳本,在.bat文件紙包起來,然後從Windows調用它計劃任務:

另外,根據您的版本,你可以安排在同一SQL腳本從SQL Server代理:

把不同旋轉東西:

  • 當用戶單擊鏈接時,可以檢查當前時間(對於MSSQL)是否>> 24小時。如果是這樣,你會回覆一個「太晚」的消息(而不是驗證條目)。

在任何情況下 - 你絕對,完全,完全,做不是想要使用觸發器!

+0

爲什麼我不想使用觸發器?他們是如此的邪惡以至於他們應該被拋棄在一個被遺忘的角落? – Netfangled

+0

不可以。但是他們非常邪惡,因爲這個問題你應該放棄一個房子的想法(像Dorothy在「綠野仙蹤」中對東方的邪惡女巫所做的那樣);觸發器非常適合一些問題......對於這個問題很荒謬。 *正確*解決方案是當用戶點擊鏈接時執行操作(正如我在我的文章中所建議的那樣)。恕我直言... – paulsm4

相關問題