1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-28 13:01:41 +03:00
2019-06-14 11:12:18 +02:00

206 lines
5.2 KiB
Plaintext

set default_storage_engine=innodb;
create or replace table dept (
dept_id int(10) primary key,
name varchar(100)
)
with system versioning;
create or replace table emp (
emp_id int(10) primary key,
dept_id int(10),
name varchar(100),
salary int(10),
constraint `dept-emp-fk`
foreign key (dept_id) references dept (dept_id)
on delete restrict
on update restrict
)
with system versioning;
select now() into @ts_0;
insert into dept (dept_id, name) values (10, "accounting");
commit;
select row_start into @ts_1 from dept where dept_id=10;
insert into emp (emp_id, name, salary, dept_id) values (1, "bill", 1000, 10);
commit;
select row_start into @ts_2 from emp where name="bill";
select * from emp;
emp_id dept_id name salary
1 10 bill 1000
update emp set salary=2000 where name="bill";
commit;
select row_start into @ts_3 from emp where name="bill";
select * from emp;
emp_id dept_id name salary
1 10 bill 2000
select * from emp for system_time as of timestamp @ts_2;
emp_id dept_id name salary
1 10 bill 1000
select * from emp for system_time as of timestamp @ts_3;
emp_id dept_id name salary
1 10 bill 2000
select * from emp e, dept d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
1 10 bill 2000 10 accounting
select * from
emp for system_time from timestamp @ts_1 to timestamp @ts_2 e,
dept for system_time from timestamp @ts_1 to timestamp @ts_2 d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
set statement system_versioning_asof=@ts_0 for
select * from emp e, dept d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
set statement system_versioning_asof=@ts_1 for
select * from emp e, dept d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
set statement system_versioning_asof=@ts_2 for
select * from emp e, dept d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
1 10 bill 1000 10 accounting
set statement system_versioning_asof=@ts_3 for
select * from emp e, dept d
where d.dept_id = 10
and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
1 10 bill 2000 10 accounting
drop table emp, dept;
create table t1 (
a timestamp(6),
b timestamp(6) generated always as (a + interval 1 day),
c timestamp(6) generated always as (a + interval 1 month) stored,
d timestamp(6) generated always as row start,
e timestamp(6) generated always as row end,
period for system_time(d,e)
) with system versioning;
show columns from t1;
Field Type Null Key Default Extra
a timestamp(6) NO current_timestamp(6) on update current_timestamp(6)
b timestamp(6) YES NULL VIRTUAL GENERATED
c timestamp(6) YES NULL STORED GENERATED
d timestamp(6) NO NULL STORED GENERATED
e timestamp(6) NO NULL STORED GENERATED
select *,'---' from information_schema.columns where table_name='t1';
TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1
COLUMN_NAME a
ORDINAL_POSITION 1
COLUMN_DEFAULT current_timestamp(6)
IS_NULLABLE NO
DATA_TYPE timestamp
CHARACTER_MAXIMUM_LENGTH NULL
CHARACTER_OCTET_LENGTH NULL
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION 6
CHARACTER_SET_NAME NULL
COLLATION_NAME NULL
COLUMN_TYPE timestamp(6)
COLUMN_KEY
EXTRA on update current_timestamp(6)
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
IS_GENERATED NEVER
GENERATION_EXPRESSION NULL
--- ---
TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1
COLUMN_NAME b
ORDINAL_POSITION 2
COLUMN_DEFAULT NULL
IS_NULLABLE YES
DATA_TYPE timestamp
CHARACTER_MAXIMUM_LENGTH NULL
CHARACTER_OCTET_LENGTH NULL
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION 6
CHARACTER_SET_NAME NULL
COLLATION_NAME NULL
COLUMN_TYPE timestamp(6)
COLUMN_KEY
EXTRA VIRTUAL GENERATED
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
IS_GENERATED ALWAYS
GENERATION_EXPRESSION `a` + interval 1 day
--- ---
TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1
COLUMN_NAME c
ORDINAL_POSITION 3
COLUMN_DEFAULT NULL
IS_NULLABLE YES
DATA_TYPE timestamp
CHARACTER_MAXIMUM_LENGTH NULL
CHARACTER_OCTET_LENGTH NULL
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION 6
CHARACTER_SET_NAME NULL
COLLATION_NAME NULL
COLUMN_TYPE timestamp(6)
COLUMN_KEY
EXTRA STORED GENERATED
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
IS_GENERATED ALWAYS
GENERATION_EXPRESSION `a` + interval 1 month
--- ---
TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1
COLUMN_NAME d
ORDINAL_POSITION 4
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE timestamp
CHARACTER_MAXIMUM_LENGTH NULL
CHARACTER_OCTET_LENGTH NULL
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION 6
CHARACTER_SET_NAME NULL
COLLATION_NAME NULL
COLUMN_TYPE timestamp(6)
COLUMN_KEY
EXTRA STORED GENERATED
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
IS_GENERATED ALWAYS
GENERATION_EXPRESSION ROW START
--- ---
TABLE_CATALOG def
TABLE_SCHEMA test
TABLE_NAME t1
COLUMN_NAME e
ORDINAL_POSITION 5
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE timestamp
CHARACTER_MAXIMUM_LENGTH NULL
CHARACTER_OCTET_LENGTH NULL
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION 6
CHARACTER_SET_NAME NULL
COLLATION_NAME NULL
COLUMN_TYPE timestamp(6)
COLUMN_KEY
EXTRA STORED GENERATED
PRIVILEGES select,insert,update,references
COLUMN_COMMENT
IS_GENERATED ALWAYS
GENERATION_EXPRESSION ROW END
--- ---
drop table t1;