首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中有没有版本控制?

mysql中有没有版本控制?
EN

Stack Overflow用户
提问于 2013-05-13 20:28:28
回答 2查看 145关注 0票数 3

可以将版本控制系统与mysql数据库一起使用吗?或者,是否已经实现了版本控制系统?

我想说例如: SELECT foo FROM bar WHERE version =X

其中,版本是带有上次更新日期的mysql内部列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-03 21:27:04

您还可以为日志记录定义额外的表。例如,如果您已经有一个表新闻,您可以将其复制为news_log。然后添加用于记录数据的列,例如:修改日期、操作(更新、删除、添加)等。

接下来,在原始表上定义触发器,这些触发器将把数据插入到日志记录表中。例如,当您更新新闻表中的一条记录时,将执行您定义的news_log_trigger,并将一条新记录插入到new_log中,其中操作值为" update“,当前日期为修改日期。

有关mysql触发器的更多信息,请访问:http://dev.mysql.com/doc/refman/5.0/en/triggers.html

如果您想对每个项目执行此操作,则可以编写一个通用存储过程来执行实际的日志记录,这是有问题的。这样,您就可以重用它,并且只需定义触发器和日志表。

票数 1
EN

Stack Overflow用户

发布于 2013-12-31 01:47:49

很晚才有反应...与Ruben的建议类似,我设置了触发器来更新version_control表,以便在每次插入、更新和删除时增加版本号。

我在我的网站mradamfrancis.tumblr.com上列出了这些步骤

**更新**

我决定使用触发器来辅助版本控制。下面是…如何

我有一个包含播放器的表,如果有变化(插入、删除或更新),我想在我的version_control表中增加版本号。

version_control表是这样的: version_id (键),table_name (varchar),version (整数)

然后,我在players表上创建了3个触发器,一个用于插入、删除和更新。

插入:

代码语言:javascript
复制
    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 ;

删除:

代码语言:javascript
复制
    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 ;

更新:

代码语言:javascript
复制
    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。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16522058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档