SYSTEM$STREAM_GET_TABLE_TIMESTAMP
SYSTEM$STREAM_GET_TABLE_TIMESTAMP
지정한 스트림의 현재 오프셋 이전이거나 같은 최신 테이블 버전의 타임스탬프를 나노초 단위로 반환하는 시스템 함수예요. 스트림을 조회(또는 소비)하면 이 테이블 버전 이후와 현재 시간 이전에 커밋된 모든 트랜잭션의 레코드가 포함돼요.
본문
참고: 이 함수는 주로 스트림을 "부트스트랩"하기 위한 수단으로 만들어졌어요. 즉 테이블이 만들어졌을 때(테이블 버전
t0)부터 지정한 스트림이 만들어질 때까지의 기간에 삽입된 레코드 집합을 반환합니다. 이 함수가 도입된 이후로 CREATE STREAM과 CHANGES 절을 포함한 SELECT 문장이 AT | BEFORE 절로 Time Travel을 지원해, 과거 테이블 레코드를 조회하는 데 더 큰 유연성을 제공해요.
SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
<stream_name> — 조회할 스트림 이름. 정규화된 이름이라면 데이터베이스·스키마를 포함한 전체 이름을 작은따옴표로 감싸야 해요: '<db>.<schema>.<stream_name>'. 이름이 대소문자를 구분하거나 특수문자·공백을 포함하면 큰따옴표가 필요하고, 큰따옴표는 작은따옴표 안에 있어야 해요: '"<stream_name>"'.
사용 메모
- 입력이 뷰의 스트림이면 오류를 반환해요.
- 기존 스트림의 현재 오프셋 이전이거나 같은 스트림을 만들려면, 간단함과 기존 스트림과의 최대 호환성을 위해 AT | BEFORE 절에 기존 스트림 이름을 입력으로 제공하는 걸 권장해요:
CREATE STREAM ... AT ( STREAM => '<stream-name>' )
예시 — 스트림의 현재 오프셋 타임스탬프 조회:
create table MYTABLE1 (id int);
create table MYTABLE2(id int);
create or replace stream MYSTREAM on table MYTABLE1;
insert into MYTABLE1 values (1);
-- consume the stream
begin;
insert into MYTABLE2 select id from MYSTREAM;
commit;
-- return the current offset for the stream
select system$stream_get_table_timestamp('MYSTREAM');