Я использую 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 |
У меня нет способа удалить историю для этого пользователя. Я бы хотел.