Php 在mysql中是否有任何预定义的函数来获取以前的值?
简单的例子:Php 在mysql中是否有任何预定义的函数来获取以前的值?,php,mysql,Php,Mysql,简单的例子: ID NAME ----------- 1 Test 2 Test1 我将Test1更新为Test3 现在的结果是: ID NAME ---------- 1 Test 2 Test3 更新字段名后,我需要指定字段的上一个值Test1。是否有任何预定义函数可用?不在sql中,如果使用其他语言(如PHP)进行更新,则可以存储该值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数
ID NAME
-----------
1 Test
2 Test1
我将Test1更新为Test3
现在的结果是:
ID NAME
----------
1 Test
2 Test3
更新字段名后,我需要指定字段的上一个值Test1。是否有任何预定义函数可用?不在sql中,如果使用其他语言(如PHP)进行更新,则可以存储该值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数据就会丢失。不是在sql中,如果您使用其他语言(如PHP)进行更新,您可以存储值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数据就会丢失。我认为mysql没有这样的功能 查看mysql事务,并在提交事务之前尝试获取值 语法:
BEGIN TRANSACTION
...
END
我认为mysql没有这样的功能 查看mysql事务,并在提交事务之前尝试获取值 语法:
BEGIN TRANSACTION
...
END
如果您想永久访问上一个值,一个选项是通过向同一个表中添加一行“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$$
如果您想永久访问上一个值,一个选项是通过向同一个表中添加一行“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$$
一个混乱的答案包括添加一个名为LAST_NAME或类似名称的列:
UPDATE TABLE SET LAST_NAME=NAME,NAME = 'New Name' WHERE ID = 1
一个混乱的答案包括添加一个名为LAST_NAME或类似名称的列:
UPDATE TABLE SET LAST_NAME=NAME,NAME = 'New Name' WHERE ID = 1
一旦更改数据并提交事务(如果使用),以前的值将永远丢失。也许您可以在更新表之前将以前的值存储在内存中?一旦更改数据并提交事务(如果使用),以前的值将永远丢失。也许您可以在更新表之前将以前的值存储在内存中?您也可以在SQL中执行此操作,例如:SET@var=SELECT name FROM table WHERE…@netcoder非常正确,我没有想到这一点,然而,我的主要观点是,在提交新值之前,您需要将值存储在变量中。@mariselvampannerselvam正如netcoder建议的那样,您完全可以在sql中执行此操作,这取决于您以后要对其执行什么操作。您也可以在sql中执行此操作,例如:SET@var=SELECT name FROM table WHERE…@netcoder very true,我没有想到这一点,但我的主要观点是,在提交新值之前,您需要将值存储在变量中。@Mariselvampannerselvam,正如netcoder建议的那样,您完全可以在sql中执行此操作,这取决于您在提交新值之后想对其执行什么操作。