是否可以从时态表中恢复?
我定义了两个这样的表:
create table lib.x(
"ID" INTEGER GENERATED ALWAYS AS IDENTITY (
START WITH 1 INCREMENT BY 1
NO MINVALUE NO MAXVALUE
NO CYCLE NO ORDER
CACHE 20
),
char char(1),
row_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN IMPLICITLY hidden,
row_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END IMPLICITLY hidden,
row_id TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID IMPLICITLY hidden,
PERIOD SYSTEM_TIME(row_start, row_end)
);
create table lib.x_history like lib.x;
alter TABLE lib.x
ADD VERSIONING USE HISTORY TABLE lib.x_history;
然后我做了这个:
insert into lib.x(char) values('a'), ('b'), ('c');
delete from lib.x where id = 2;
是否可以还原id为2的字符“b”?
1条答案
按热度按时间fquxozlt1#
是和否。这不是一个系统还原,但您当然可以查询旧状态并使用它插入到常规表中。请参阅db2文档中的“查询系统周期时态数据”一节。
您首先要构造一个查询来搜索。稍后,可以将其用作insert语句的输入。因此,您可以恢复该值,但它被视为删除该值并将其作为新的插入。