2011-03-21 78 views
1

我正在使用MySQL和InnoDB。我对所有表的记录进行了版本控制 - 记录的最新版本有一个名为'lv'的列设置为1,并且此ID'lv'列设置为1的先前记录必须设置为0有一个新版本。我现在每次插入新记录(版本)时都会执行两个查询。有什么办法可以让InnoDB自动执行?谢谢您的意见。InnoDB自动操作

回答

1

你可以使用触发器?

这是未经测试,但我觉得这样的事情是可能的:

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 :)

+0

我添加AND vid = NEW.vid,并在通过phpmyadmin提交查询后 - 我得到一个超时。目前该表只有7个记录。 – donkapone 2011-03-22 07:02:10

+0

实际上并不工作,因为MySQL不允许用触发器更改同一个表,除非只需要将NEW对象设置为所需值时更改可修改行。这样,它不会传播另一个触发器,因为它不是触发器的一部分 - 它是导致触发器的SQL查询的一部分。 – donkapone 2011-03-23 22:19:47