在mysql數據庫中可以使用版本控制系統嗎? 或者,有沒有已經實施的版本控制系統?mysql中是否有任何版本控制?
我想說例如爲:SELECT FROM foo的酒吧,在那裏版本= X
Whereeby版本是一個MySQL的內部科拉姆與去年更新日期。
在mysql數據庫中可以使用版本控制系統嗎? 或者,有沒有已經實施的版本控制系統?mysql中是否有任何版本控制?
我想說例如爲:SELECT FROM foo的酒吧,在那裏版本= X
Whereeby版本是一個MySQL的內部科拉姆與去年更新日期。
你也可以定義額外的表來記錄。例如,如果你已經有一個表新聞,你可以複製它作爲news_log。然後添加用於記錄數據的列,如:修改日期,操作(更新,刪除,添加)等。
接下來,您將在原始表上定義觸發器,這些觸發器會將數據插入到日誌記錄表中。例如,當您更新新聞表中的記錄時,將執行您定義的news_log_trigger,並將新記錄插入到new_log中,其操作值爲「UPDATE」,當前日期爲修改日期。
對MySQL的更多信息觸發: http://dev.mysql.com/doc/refman/5.0/en/triggers.html
如果你想爲你可以problably寫一個通用的存儲過程來執行實際的記錄每一個項目做到這一點。這樣你可以重用它,你只需要定義觸發器和記錄表。
很晚的響應...類似於Ruben的建議,我設置了觸發器來更新版本控制表,以在每次有INSERT,UPDATE & DELETE時遞增版本號。
我奠定了我的網站上的步驟mradamfrancis.tumblr.com
**更新**
我決定使用觸發器來幫助版本控制。這是如何...
我有一個表包含播放器,如果有變化(插入,刪除或更新)我想在我的version_control表中增加版本號。
這是VERSION_CONTROL表的外觀: VERSION_ID(鍵),TABLE_NAME(VARCHAR),版本(整數)
我然後創建對球員表3級的觸發器,一個INSERT,DELETE & UPDATE。
INSERT:
delimiter //
CREATE TRIGGER `player_table_INSERT` AFTER INSERT ON `players`
FOR EACH ROW BEGIN
UPDATE version_control SET version=version+1 WHERE table_name=’players’;
END;//
delimiter ;
DELETE:
delimiter //
CREATE TRIGGER `player_table_DELETE` AFTER DELETE ON `players`
FOR EACH ROW BEGIN
UPDATE version_control SET version=version+1 WHERE table_name=’players’;
END;//
delimiter ;
UPDATE:
delimiter //
CREATE TRIGGER `player_table_UPDATE` AFTER UPDATE ON `players`
FOR EACH ROW BEGIN
UPDATE version_control SET version=version+1 WHERE table_name=’players’;
END;//
delimiter ;
**我對扳機的每一部分的額外的SQL語句,因此我我使用了分隔符(第一行和最後一行)以及BEGIN & END。
AFAIK不,在任何RDBMS中都沒有這種東西。猜猜你應該自己添加該功能。例如,所有表中的附加「版本」列(至少在那些需要版本控制的列中)。另外,這個VC功能應該可以在ORM級別進行管理。 – 2013-06-02 18:52:34