Rails управляет версионностью таблицы в mariadb 10.3 - PullRequest
0 голосов
/ 23 января 2019

После обновления с MariaDB 10.2 до MariaDB 10.3 я изменяю таблицу documents с версионированием системы.

Консоль MYSQL:

> 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

Теперь все обновления будут сохраняться в моей базе данных.

Моя проблема:

Я не хочу, чтобы mariadb сохраняла все версии для всех sql, например update document set ...

Моя цель:

Если значениестолбца writing_content не изменяется, поэтому в базе данных не генерируется новая версия.

пример в приложении rails:

Document.find(1).update_attributes({is_locked:true}) #=> don't save with a new version
Document.find(1).update_attributes({writing_content:'test test'}) #=> will be saved with a new version

Как сделать этот элемент управления в моем контроллере?Спасибо за любые предложения.

Env: Ruby 2.4.1 Rails 5.1.6

1 Ответ

0 голосов
/ 23 января 2019

Я нашел ответ сам:

Исключая столбцы из версий

все остальные столбцы, кроме 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;

Узнай больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...