Удалить конкретную историю в проверенных таблицах? - PullRequest
0 голосов
/ 08 ноября 2018

Я использую MariaDB 10.3. Есть ли способ удалить историю для конкретной записи? У меня есть ситуация, когда после удаления записи я по контракту удаляю все записи (включая исторические).

Рассмотрим следующую таблицу:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `start_trxid` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
  `end_trxid` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
  PRIMARY KEY (`id`,`end_trxid`),
  PERIOD FOR SYSTEM_TIME (`start_trxid`, `end_trxid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING

И рассмотрим следующие команды, запущенные для этой таблицы:

insert into users (name, email) values ('cory', 'name@corycollier.com'), ('bob', 'bob@gmail.com');
UPDATE users set name='Cory' where id=1;
UPDATE users set name='Cory Collier' where id=1;
UPDATE users set name='Cory C' where id=1;
UPDATE users set name='Cory' where id=1;

Это оставляет меня со следующей историей:

select * from (select * from users FOR SYSTEM_TIME BETWEEN (NOW() - INTERVAL 1 DAY) and (NOW())) as history where id=1;
+----+--------------+-----------------------------+-------------+----------------------+
| id | name         | email                       | start_trxid | end_trxid            |
+----+--------------+-----------------------------+-------------+----------------------+
|  1 | cory         | corycollier@corycollier.com |      697377 |               697384 |
|  1 | Cory Collier | corycollier@corycollier.com |      697384 |               697391 |
|  1 | Cory C       | corycollier@corycollier.com |      697391 |               697394 |
|  1 | Cory         | corycollier@corycollier.com |      697394 |               697401 |

У меня нет способа удалить историю для этого пользователя. Я бы хотел.

...