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