1
我正在使用MySQL和InnoDB。我对所有表的记录进行了版本控制 - 记录的最新版本有一个名为'lv'的列设置为1,并且此ID'lv'列设置为1的先前记录必须设置为0有一个新版本。我现在每次插入新记录(版本)时都会执行两个查询。有什么办法可以让InnoDB自动执行?谢谢您的意见。InnoDB自动操作
我正在使用MySQL和InnoDB。我对所有表的记录进行了版本控制 - 记录的最新版本有一个名为'lv'的列设置为1,并且此ID'lv'列设置为1的先前记录必须设置为0有一个新版本。我现在每次插入新记录(版本)时都会执行两个查询。有什么办法可以让InnoDB自动执行?谢谢您的意见。InnoDB自动操作
你可以使用触发器?
这是未经测试,但我觉得这样的事情是可能的:
delimiter |
CREATE TRIGGER newversion BEFORE INSERT ON yourTable
FOR EACH ROW BEGIN
UPDATE yourTable SET lv = 0 WHERE lv = 1;
END;
|
delimiter ;
有可能是有一些错误,因为它是一个快速型,基于the manual ofcourse :)
我添加AND vid = NEW.vid,并在通过phpmyadmin提交查询后 - 我得到一个超时。目前该表只有7个记录。 – donkapone 2011-03-22 07:02:10
实际上并不工作,因为MySQL不允许用触发器更改同一个表,除非只需要将NEW对象设置为所需值时更改可修改行。这样,它不会传播另一个触发器,因为它不是触发器的一部分 - 它是导致触发器的SQL查询的一部分。 – donkapone 2011-03-23 22:19:47