簡體   English   中英

mysql中有任何版本控制嗎?

[英]Is there any version control in mysql?

可以使用帶有mysql數據庫的版本控制系統嗎? 或者,是否已經實施了版本控制系統?

我想說,例如:SELECT foo FROM bar WHERE version = X.

Whereeby版本是具有上次更新日期的mysql內部列。

非常晚的響應...類似於Ruben的建議,每次有INSERT,UPDATE和DELETE時,我都會設置觸發器來更新version_control表以增加版本號。

我在我的網站mradamfrancis.tumblr.com上列出了這些步驟

**更新**
我決定使用觸發器來協助版本控制。 這是如何做…

我有一個包含播放器的表,如果有更改(INSERT,DELETE或UPDATE)我想在我的version_control表中增加版本號。

這是version_control表的外觀:version_id(key),table_name(varchar),version(integer)

然后我在播放器表上創建3個觸發器,一個用於INSERT,DELETE和UPDATE。

插入:

    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 ;

刪除:

    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 ;

更新:

    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 ;

**我在觸發器的FOR EACH部分有額外的SQL語句,因此我使用了分隔符(第1行和最后一行)以及BEGIN和END。

您還可以定義額外的表以進行日志記錄。 例如,如果您已有表新聞,則可以將其復制為news_log。 然后添加用於記錄數據的列,例如:修改日期,操作(更新,刪除,添加)等。

接下來,您將在原始表上定義觸發器,以將數據插入到日志記錄表中。 例如,當您更新新聞表中的記錄時,將執行您定義的news_log_trigger,並將新記錄插入到new_log中,其操作值為“UPDATE”,當前日期為修改日期。

有關mysql觸發器的更多信息: http//dev.mysql.com/doc/refman/5.0/en/triggers.html

如果您想為每個項目執行此操作,您可以編寫一個通用存儲過程來執行實際日志記錄。 這樣你可以重用它,你只需要定義觸發器和日志表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM