[英]MySQL event or trigger to automatically update a value 30 minutes after last modify
我在我的數據庫( db_test
)中有一個包含 3 列( id
、 test_field
、 timestamp_ins
、 timestamp_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.