簡體   English   中英

MySQL 事件或觸發器在上次修改后 30 分鍾自動更新值

[英]MySQL event or trigger to automatically update a value 30 minutes after last modify

我在我的數據庫( db_test )中有一個包含 3 列( idtest_fieldtimestamp_instimestamp_mod )的表( tb_test )。

id是具有自動增量屬性的“主鍵”;

test_field是一個 char(1),只能包含 2 個值('N' 或 'S');

timestamp_ins是具有當前時間戳的日期時間(不更新);

timestamp_mod是一個日期時間,當前時間戳設置為 ON UPDATE CURRENT_TIMESTAMP()。

我希望test_field在上次修改timestamp_mod值中指示的記錄后 30 分鍾自動返回默認值 ('N')。

我不是 mysql 方面的專家,所以我需要這方面的幫助。 是否可以在 XAMPP 虛擬服務器上使用 phpMyAdmin ?

--UPDATE-- 用這個語法解決:

CREATE EVENT IF NOT EXISTS test_event
ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE ni0y2__test
SET test_field = DEFAULT
WHERE test_field < NOW() - INTERVAL 30 MINUTE

只有一個疑問:這個事件會讓我的 DB 表現更差嗎?

我更喜歡把責任放在讀者身上,而不是桌子上:

SELECT  IF (timestamp_mod < NOW() - INTERVAL 30 MINUTE,
            'N',
            test_field)  AS funky_field
    FROM tb_test;

EVENTs有一些開銷。 此外,上述方法將在 30 分鍾后發生變化; 任何使用EVENT的嘗試都只有大約 30 次。

可以使用VIEW或 Stored Function 或GENERATED列對用戶“隱藏” IF(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM