[mysql触发器,在更新后删除特定的列记录

问题描述 投票:0回答:1
create table instructor (
ID char(5),
password varchar(256),
token varchar(256) null,
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2));

记录示例

id  password      token            name      dept_name          salary    
1   safakndanda   null             denis     cooking            50000    
2   adghbjksdaj   null             victor    cleaning           60000    
3   ahdagsdgda    gads5a7sd6as7d   peter     management         120000     
4   afsfgfdds     null             judy      management         300000  

例如,id 3上的令牌刚刚更新,我想编写触发器,它将在3小时后删除id = 3的令牌列上记录的数据

mysql mysql-workbench
1个回答
1
投票

首先,您需要附加一列来保存令牌更新时间,每次更新时,代码或MySQL触发器都会更新该列。

下一步,您应该为此使用Event Scheduler

CREATE EVENT ExpireTokens
ON SCHEDULE EVERY 1 HOUR DO
BEGIN
    UPDATE instructor 
    SET 
        token = NULL 
    WHERE 
        TIMESTAMPDIFF(HOUR, token_updated_at, NOW()) > 3 AND
        token IS NOT NULL
END;
© www.soinside.com 2019 - 2024. All rights reserved.