是否有任何预定义的函数来获取mysql中的先前值?

时间:2012-06-26 13:17:46

标签: php mysql

简单示例:

ID     NAME  
-----------   
1      Test  
2      Test1

我将Test1更新为Test3

现在的结果是:

ID    NAME  
----------  
1     Test  
2     Test3

更新字段NAME后,我想要指定字段的上一个值Test1。是否有可用的预定义功能?

4 个答案:

答案 0 :(得分:3)

如果您想永久访问以前的值,可以选择将“oldName”行添加到同一个表中,将其存储在数据库中。您甚至可以使用触发器在更改名称时系统地备份名称:

DELIMITER $$
CREATE TRIGGER `backup_name` BEFORE UPDATE ON `table1`
FOR EACH ROW BEGIN
    IF NEW.name <> OLD.name THEN
    SET NEW.oldName = OLD.name;
    END IF
END$$

答案 1 :(得分:0)

不在sql中,如果您使用其他语言(如PHP)进行更新,则可以存储值然后更新,这样您仍然可以使用旧值。但正如有人在评论中提到的那样,一旦提交数据就会丢失。

答案 2 :(得分:0)

我认为mysql没有这样的功能。

查看mysql的事务并尝试在事务的COMMIT之前获取值

语法:

BEGIN TRANSACTION
...
END

答案 3 :(得分:0)

一个混乱的答案包括添加名为LAST_NAME或类似的列:

UPDATE TABLE SET LAST_NAME=NAME,NAME = 'New Name' WHERE ID = 1