2011-03-21 27 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