是否可以收听更新并更改价值?

时间:2018-04-12 07:55:22

标签: mysql

假设我有一个包含StatusTimestamp列等的mysql表。是否可以在更新Timestamp时进行Status更新?

2 个答案:

答案 0 :(得分:1)

是的,你有3种不同的方法:

1)明确地向您的查询添加时间戳更新。

2)在数据库上实现触发器。触发器用于在事件发生时执行操作。使用触发器唯一不好的地方是它不能保证时间戳与更新发生的时间相同;因此,用查询更新它的原因更好。

3)使用存储过程进行更新,这些存储过程通过单个数据库调用进行多次更改。

说实话:1是最简单的方法,也是我推荐的方法,因为这也不是触发器必然适合的目的。

答案 1 :(得分:1)

您可以使用AFTER UPDATE ON table触发器来检查状态列值是否已更改。 Trigger Syntax and Examples

例如

CREATE TRIGGER `your_trigger_name` 
AFTER INSERT ON `TableName` 
FOR EACH ROW  

IF NOT NEW.StatusColumnName <=> OLD.StatusColumnName THEN
    UPDATE TableName SET TimeStampColumnName = NOW() WHERE id = OLD.id; 
END IF;