Rails管理mariadb 10.3中的表的版本控制

时间:2019-01-23 11:35:47

标签: mysql ruby-on-rails ruby database mariadb

从MariaDB 10.2升级到MariaDB 10.3之后,我使用系统版本更改表$(document).click(function(e) { var ele = $(e.toElement); if (!ele.hasClass("hasDatepicker") && !ele.hasClass("ui-datepicker") && !ele.hasClass("ui-icon") && !$(ele).parent().parents(".ui-datepicker").length) $(".hasDatepicker").datepicker("hide"); });

MYSQL控制台:

documents

从现在开始,所有更新将保存在我的数据库中。

我的问题是:

我不希望mariadb存储所有SQL的所有版本,例如> SHOW CREATE TABLE documents \G *************************** 1. row *************************** Table: documents Create Table: CREATE TABLE `documents` ( `id` int(11) NOT NULL AUTO_INCREMENT, `label` varchar(255) DEFAULT NULL, `writing_content` text DEFAULT NULL, `is_locked` tinyint(1) DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=697 DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING

我的目标是:

如果未修改列update document set ...的值,则数据库中不会生成新版本。

rails应用程序中的示例:

writing_content

如何在我的控制器中执行此控制?谢谢您的任何建议。

Env: Ruby 2.4.1 Rails 5.1.6

1 个答案:

答案 0 :(得分:0)

我自己找到了答案:

从版本控制中排除列

writing_contents以外的所有其他列都可以声明为没有版本。

创建一个新表:

Create Table: CREATE TABLE `documents` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label` varchar(255) DEFAULT NULL WITHOUT SYSTEM VERSIONING,
  `writing_content` text DEFAULT NULL,
  `is_locked` tinyint(1) DEFAULT 0 WITHOUT SYSTEM VERSIONING,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=697 DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING

修改现有表格的列:

SET @@system_versioning_alter_history = 1;
ALTER TABLE document MODIFY writing_content  WITH  SYSTEM VERSIONING;

Know more