可以将版本控制系统与mysql数据库一起使用吗?或者,是否已经实现了版本控制系统?
我想说例如: SELECT foo FROM bar WHERE version =X
其中,版本是带有上次更新日期的mysql内部列。
发布于 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
如果您想对每个项目执行此操作,则可以编写一个通用存储过程来执行实际的日志记录,这是有问题的。这样,您就可以重用它,并且只需定义触发器和日志表。
发布于 2013-12-31 01:47:49
很晚才有反应...与Ruben的建议类似,我设置了触发器来更新version_control表,以便在每次插入、更新和删除时增加版本号。
我在我的网站mradamfrancis.tumblr.com上列出了这些步骤
**更新**
我决定使用触发器来辅助版本控制。下面是…如何
我有一个包含播放器的表,如果有变化(插入、删除或更新),我想在我的version_control表中增加版本号。
version_control表是这样的: version_id (键),table_name (varchar),version (整数)
然后,我在players表上创建了3个触发器,一个用于插入、删除和更新。
插入:
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 ;**我在触发器的每个部分都有额外的SQL语句,因此我使用了分隔符(第一行和最后一行)以及BEGIN和END。
https://stackoverflow.com/questions/16522058
复制相似问题