mysql触发器,用于在特定列记录更新后删除该记录

mysql触发器,用于在特定列记录更新后删除该记录,mysql,mysql-workbench,Mysql,Mysql Workbench,记录示例 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 3上的令牌刚刚更新,我想写一个触发器,该触发器将在3小时后删除id=3的令牌列上记录的数据。首先,您需要额外的列来保存令牌更新时间,在每次令牌更新时将通过代码或M

记录示例

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 3上的令牌刚刚更新,我想写一个触发器,该触发器将在3小时后删除id=3的令牌列上记录的数据。首先,您需要额外的列来保存令牌更新时间,在每次令牌更新时将通过代码或MySQL触发器进行更新

下一步,您应该使用

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  

触发器必须创建事件,该事件在NOW()+间隔3小时时触发,并将更改或删除感兴趣的记录。“我想写入触发器”-您不能。不能在触发触发器的触发器中操作表。正如其他人所建议的,你需要一个活动。
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;