oracle12c_Temporal Validity

php中文网
发布: 2016-06-07 16:36:47
原创
1530人浏览过

创建temporal validity有两种方法一是自己指定列,一是让oracle自己指定 手工指定 CREATE TABLE Temporal_ValidityEMPNO NUMBER, SALARY NUMBER, DEPTID NUMBER, NAME VARCHAR2100, USER_TIME_START DATE, USER_TIME_END DATE, PERIOD FOR USER_TIME USER_TI

创建temporal validity有两种方法一是自己指定列,一是让oracle自己指定

  • 手工指定
  • CREATE TABLE Temporal_Validity
    (EMPNO NUMBER, SALARY NUMBER, DEPTID NUMBER,
               NAME VARCHAR2(100),
               USER_TIME_START DATE,
               USER_TIME_END   DATE,
            PERIOD FOR USER_TIME
                      (USER_TIME_START, USER_TIME_END));
     
    SQL> SELECT OWNER,TABLE_NAME,COLUMN_NAME,COLUMN_ID FROM DBA_TAB_COLS WHERE TABLE_NAME=UPPER('Temporal_Validity');     
     
    : TEMPORAL_VALIDITY
     
    TABLE      COLUMN
    Owner      Name                           COLUMN_ID
    ---------- ------------------------------ ---------
    TRAVEL     USER_TIME_END                          6
    TRAVEL     USER_TIME_START                        5
    TRAVEL     NAME                                   4
    TRAVEL     DEPTID                                 3
    TRAVEL     SALARY                                 2
    TRAVEL     EMPNO                                  1
    TRAVEL     USER_TIME
     
    7 ROWS selected.
     
     
    SQL>  col NAME FOR a15
    SQL> col DEFAULT$ FOR a10
    SQL> col SPARE4 FOR a1
    SQL> col SPARE5 FOR a1
    SQL> col SPARE6 FOR a1
     
    SQL> SELECT * FROM sys.col$ WHERE obj#=92087;
     
          OBJ#       COL#    SEGCOL# SEGCOLLENGTH     OFFSET NAME                 TYPE#     LENGTH FIXEDSTORAGE PRECISION#      SCALE      NULL$  DEFLENGTH DEFAULT$      INTCOL#   PROPERTY  CHARSETID CHARSETFORM EVALEDITION# UNUSABLEBEFORE# UNUSABLEBEGINNING#     SPARE1     SPARE2     SPARE3 S S S     SPARE7     SPARE8
    ---------- ---------- ---------- ------------ ---------- --------------- ---------- ---------- ------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------- ------------ --------------- ------------------ ---------- ---------- ---------- - - - ---------- ----------
         92087          0          0           22          0 USER_TIME                2         22            0                     0          0          9 430120635           1      65576          0           0            0                                             0          0          0
         92087          1          1           22          0 EMPNO                    2         22            0                                0                                2          0          0           0            0                                             0          0          0
         92087          2          2           22          0 SALARY                   2         22            0                                0                                3          0          0           0            0                                             0          0          0
         92087          3          3           22          0 DEPTID                   2         22            0                                0                                4          0          0           0            0                                             0          0          0
         92087          4          4          100          0 NAME                     1        100            0                                0                                5          0        873           1            0                                             0          0        100
         92087          5          5            7          0 USER_TIME_START         12          7            0                                0                                6          0          0           0            0                                             0          0          0
         92087          6          6            7          0 USER_TIME_END           12          7            0                                0                                7          0          0           0            0                                             0          0          0
     
    7 ROWS selected.
     
    SQL> col COLUMN_NAME FOR a20
    SQL> col TABLE_NAME FOR a15
    SQL> col CONSTRAINT_NAME FOR a20                                                                                                                                                                                                                                                              USER_TIME_START                           ENABLED          VALIDATED
    SQL> col R_CONSTRAINT_NAME FOR a20
    SQL> @cons
    SHOW constraints ON TABLE %TEMPORAL_VALIDITY%...
     
    OWNER                          TABLE_NAME      CONSTRAINT_NAME      CO R_CONSTRAINT_NAME    COLUMN_NAME                      POSITION STATUS           VALIDATED
    ------------------------------ --------------- -------------------- -- -------------------- ------------------------------ ---------- ---------------- --------------------------
    TRAVEL                         TEMPORAL_VALIDI USER_TIMEA31EBB      C                       USER_TIME                                 ENABLED          VALIDATED
                                   TY
     
    TRAVEL                                         USER_TIMEA31EBB      C                       USER_TIME_END                             ENABLED          VALIDATED
    TRAVEL                                         USER_TIMEA31EBB      C                       USER_TIME_START                           ENABLED          VALIDATED
     
    SQL> 
     
     
    SQL> @DESC TEMPORAL_VALIDITY
               Name                            NULL?    TYPE
               ------------------------------- -------- ----------------------------
        1      EMPNO                                    NUMBER
        2      SALARY                                   NUMBER
        3      DEPTID                                   NUMBER
        4      NAME                                     VARCHAR2(100)
        5      USER_TIME_START                          DATE
        6      USER_TIME_END                            DATE
    手工指定是正常列,可以通过SELECT * 来查看
    登录后复制
  • 系统自动
  • SQL> 
    SQL> CREATE TABLE TEMPORAL_VALIDITY2
      2  ( empno NUMBER, salary NUMBER, deptid NUMBER, name VARCHAR2(100),
      3   PERIOD FOR user_time);
     
    TABLE created.
     
     
    SQL> @DESC TEMPORAL_VALIDITY2
               Name                            NULL?    TYPE
               ------------------------------- -------- ----------------------------
        1      EMPNO                                    NUMBER
        2      SALARY                                   NUMBER
        3      DEPTID                                   NUMBER
        4      NAME                                     VARCHAR2(100)
     
    SQL> 
     
    SQL> col TABLE_NAME FOR a25
    SQL> col OWNER FOR a10
    SQL> SELECT OWNER,TABLE_NAME,COLUMN_NAME,COLUMN_ID FROM DBA_TAB_COLS WHERE TABLE_NAME=UPPER('Temporal_Validity2');     
     
    OWNER      TABLE_NAME                COLUMN_NAME           COLUMN_ID
    ---------- ------------------------- -------------------- ----------
    TRAVEL     TEMPORAL_VALIDITY2        NAME                          4
    TRAVEL                               DEPTID                        3
    TRAVEL                               SALARY                        2
    TRAVEL                               EMPNO                         1
    TRAVEL                               USER_TIME
    TRAVEL                               USER_TIME_END
    TRAVEL                               USER_TIME_START
     
    7 ROWS selected.
     
    SQL> 
     
    SQL> @o TEMPORAL_VALIDITY2
     
    owner                     object_name                    object_type        STATUS           OID      D_OID CREATED           LAST_DDL_TIME
    ------------------------- ------------------------------ ------------------ --------- ---------- ---------- ----------------- -----------------
    TRAVEL                    TEMPORAL_VALIDITY2             TABLE              VALID          92089      92089 20140526 22:41:37 20140526 22:41:37
     
    SQL> SELECT * FROM sys.col$ WHERE obj#=92089;
     
          OBJ#       COL#    SEGCOL# SEGCOLLENGTH     OFFSET NAME                 TYPE#     LENGTH FIXEDSTORAGE PRECISION#      SCALE      NULL$  DEFLENGTH DEFAULT$      INTCOL#   PROPERTY  CHARSETID CHARSETFORM EVALEDITION# UNUSABLEBEFORE# UNUSABLEBEGINNING#     SPARE1     SPARE2     SPARE3 S S S     SPARE7     SPARE8
    ---------- ---------- ---------- ------------ ---------- --------------- ---------- ---------- ------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------- ------------ --------------- ------------------ ---------- ---------- ---------- - - - ---------- ----------
         92089          0          1           13          0 USER_TIME_START        181         13            0                     6          0                                1         32          0           0            0                                             6          0          0
         92089          0          2           13          0 USER_TIME_END          181         13            0                     6          0                                2         32          0           0            0                                             6          0          0
         92089          0          0           22          0 USER_TIME                2         22            0                     0          0          9 430191669           3      65576          0           0            0                                             0          0          0
         92089          1          3           22          0 EMPNO                    2         22            0                                0                                4          0          0           0            0                                             0          0          0
         92089          2          4           22          0 SALARY                   2         22            0                                0                                5          0          0           0            0                                             0          0          0
         92089          3          5           22          0 DEPTID                   2         22            0                                0                                6          0          0           0            0                                             0          0          0
         92089          4          6          100          0 NAME                     1        100            0                                0                                7          0        873           1            0                                             0          0        100
     
    7 ROWS selected.
     
    SQL> @cons
    SHOW constraints ON TABLE %TEMPORAL_VALIDITY2%...
     
    OWNER                          TABLE_NAME                CONSTRAINT_NAME      CO R_CONSTRAINT_NAME    COLUMN_NAME                      POSITION STATUS           VALIDATED
    ------------------------------ ------------------------- -------------------- -- -------------------- ------------------------------ ---------- ---------------- --------------------------
    TRAVEL                         TEMPORAL_VALIDITY2        USER_TIMEA43435      C                       USER_TIME_END                             ENABLED          VALIDATED
    TRAVEL                                                   USER_TIMEA43435      C                       USER_TIME_START                           ENABLED          VALIDATED
     
    SQL>
    登录后复制

    系统自动创建了2个隐藏列USER_TIME_START,USER_TIME_END

插入数据

SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (101,1900,90,'ADAM',to_date('2000-01-01', 'yyyy-mm-dd') ,to_date('2004-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (102,2900,90,'ADAM',to_date('2001-01-01', 'yyyy-mm-dd') ,to_date('2005-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (103,3900,90,'ADAM',to_date('2002-01-01', 'yyyy-mm-dd') ,to_date('2006-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (104,4900,90,'ADAM',to_date('2003-01-01', 'yyyy-mm-dd') ,to_date('2007-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (105,5900,90,'ADAM',to_date('2004-01-01', 'yyyy-mm-dd') ,to_date('2008-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (106,6900,90,'ADAM',to_date('2005-01-01', 'yyyy-mm-dd') ,to_date('2009-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (107,7900,90,'ADAM',to_date('2006-01-01', 'yyyy-mm-dd') ,to_date('2010-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (108,8900,90,'ADAM',to_date('2007-01-01', 'yyyy-mm-dd') ,to_date('2011-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (109,9900,90,'ADAM',to_date('2008-01-01', 'yyyy-mm-dd') ,to_date('2012-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (110,1900,90,'ADAM',to_date('2009-01-01', 'yyyy-mm-dd') ,to_date('2014-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (111,2900,90,'ADAM',to_date('2010-01-01', 'yyyy-mm-dd') ,to_date('2011-05-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (112,3900,90,'ADAM',to_date('2011-01-01', 'yyyy-mm-dd') ,to_date('2011-08-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (113,4900,90,'ADAM',to_date('2012-01-01', 'yyyy-mm-dd') ,to_date('2013-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (114,5900,90,'ADAM',to_date('2013-01-01', 'yyyy-mm-dd') ,to_date('2014-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (115,6900,90,'ADAM',to_date('2014-01-01', 'yyyy-mm-dd') ,to_date('2015-01-01', 'yyyy-mm-dd'));
 
1 ROW created.
 
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (116,7900,90,'ADAM',to_date('2002-04-01', 'yyyy-mm-dd') ,to_date('2002-06-01', 'yyyy-mm-dd'));om
  2  
SQL> INSERT INTO TEMPORAL_VALIDITY2 (empno , salary , deptid , name , USER_TIME_START, USER_TIME_END) VALUES (116,7900,90,'ADAM',to_date('2002-04-01', 'yyyy-mm-dd') ,to_date('2002-06-01', 'yyyy-mm-dd'))
  2  ;
 
1 ROW created.
 
SQL> commit;
 
Commit complete.
 
SQL> SELECT * FROM TEMPORAL_VALIDITY2;
 
     EMPNO     SALARY     DEPTID NAME
---------- ---------- ---------- ---------------
       101       1900         90 ADAM
       101       1900         90 ADAM
       102       2900         90 ADAM
       103       3900         90 ADAM
       104       4900         90 ADAM
       105       5900         90 ADAM
       106       6900         90 ADAM
       107       7900         90 ADAM
       108       8900         90 ADAM
       109       9900         90 ADAM
       110       1900         90 ADAM
       111       2900         90 ADAM
       112       3900         90 ADAM
       113       4900         90 ADAM
       114       5900         90 ADAM
       115       6900         90 ADAM
       116       7900         90 ADAM
 
 
 
SQL> SELECT NAME,
  2  to_char(USER_TIME_START, 'yyyy-mm-dd'), to_char(USER_TIME_END, 'yyyy-mm-dd')
  3  FROM TEMPORAL_VALIDITY2 ORDER BY 2;
 
NAME            TO_CHAR(USER_TIME_ST TO_CHAR(USER_TIME_EN
--------------- -------------------- --------------------
ADAM            2000-01-01           2011-12-31
ADAM            2000-01-01           2004-01-01
ADAM            2001-01-01           2005-01-01
ADAM            2002-01-01           2006-01-01
ADAM            2002-04-01           2002-06-01
ADAM            2003-01-01           2007-01-01
ADAM            2004-01-01           2008-01-01
ADAM            2005-01-01           2009-01-01
ADAM            2006-01-01           2010-01-01
ADAM            2007-01-01           2011-01-01
ADAM            2008-01-01           2012-01-01
ADAM            2009-01-01           2014-01-01
ADAM            2010-01-01           2011-05-01
ADAM            2011-01-01           2011-08-01
ADAM            2012-01-01           2013-01-01
ADAM            2013-01-01           2014-01-01
ADAM            2014-01-01           2015-01-01
登录后复制
  • 示例1
  • oracle12c_Temporal Validity 1

    SQL> SELECT NAME,
      2  to_char(USER_TIME_START, 'yyyy-mm-dd'), to_char(USER_TIME_END, 'yyyy-mm-dd')
      3  FROM TEMPORAL_VALIDITY2  AS OF PERIOD FOR USER_TIME
      4          to_date('2004-01-01', 'yyyy-mm-dd') ORDER BY 2;
     
    NAME            TO_CHAR(USER_TIME_ST TO_CHAR(USER_TIME_EN
    --------------- -------------------- --------------------
    ADAM            2000-01-01           2011-12-31
    ADAM            2001-01-01           2005-01-01
    ADAM            2002-01-01           2006-01-01
    ADAM            2003-01-01           2007-01-01
    ADAM            2004-01-01           2008-01-01
    登录后复制

    The query displays all whose

    寻鲸AI
    寻鲸AI

    寻鲸AI是一款功能强大的人工智能写作工具,支持对话提问、内置多场景写作模板如写作辅助类、营销推广类等,更能一键写作各类策划方案。

    寻鲸AI 68
    查看详情 寻鲸AI
  • 示例2
  • oracle12c_Temporal Validity 2

    SQL> SELECT NAME,
      2  to_char(USER_TIME_START, 'yyyy-mm-dd'), to_char(USER_TIME_END, 'yyyy-mm-dd')
      3  FROM TEMPORAL_VALIDITY2  versions PERIOD FOR USER_TIME
      4          BETWEEN to_date('2004-01-01', 'yyyy-mm-dd')
      5            AND     to_date('2008-01-01', 'yyyy-mm-dd')
      6  ORDER BY 2;
     
    NAME            TO_CHAR(USER_TIME_ST TO_CHAR(USER_TIME_EN
    --------------- -------------------- --------------------
    ADAM            2000-01-01           2011-12-31
    ADAM            2001-01-01           2005-01-01
    ADAM            2002-01-01           2006-01-01
    ADAM            2003-01-01           2007-01-01
    ADAM            2004-01-01           2008-01-01
    ADAM            2005-01-01           2009-01-01
    ADAM            2006-01-01           2010-01-01
    ADAM            2007-01-01           2011-01-01
    ADAM            2008-01-01           2012-01-01
    登录后复制

    The query displays all whose USER_TIME_START is less than or equal to ‘2004-01-01′ and USER_TIME_END greater than or equal to ‘2008-01-01′‘.

  • 示例3
  • oracle12c_Temporal Validity 3

    SQL> EXEC DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('CURRENT')
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL> SELECT NAME,
      2  to_char(USER_TIME_START, 'yyyy-mm-dd'), to_char(USER_TIME_END, 'yyyy-mm-dd')
      3  FROM TEMPORAL_VALIDITY2 ORDER BY 2;
     
    NAME            TO_CHAR(USER_TIME_ST TO_CHAR(USER_TIME_EN
    --------------- -------------------- --------------------
    ADAM            2014-01-01           2015-01-01
    登录后复制
  • 示例4
  • SQL> EXEC DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('ALL')
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL> SELECT NAME,
      2  to_char(USER_TIME_START, 'yyyy-mm-dd'), to_char(USER_TIME_END, 'yyyy-mm-dd')
      3  FROM TEMPORAL_VALIDITY2 ORDER BY 2;
     
    NAME            TO_CHAR(USER_TIME_ST TO_CHAR(USER_TIME_EN
    --------------- -------------------- --------------------
    ADAM            2000-01-01           2011-12-31
    ADAM            2000-01-01           2004-01-01
    ADAM            2001-01-01           2005-01-01
    ADAM            2002-01-01           2006-01-01
    ADAM            2002-04-01           2002-06-01
    ADAM            2003-01-01           2007-01-01
    ADAM            2004-01-01           2008-01-01
    ADAM            2005-01-01           2009-01-01
    ADAM            2006-01-01           2010-01-01
    ADAM            2007-01-01           2011-01-01
    ADAM            2008-01-01           2012-01-01
    ADAM            2009-01-01           2014-01-01
    ADAM            2010-01-01           2011-05-01
    ADAM            2011-01-01           2011-08-01
    ADAM            2012-01-01           2013-01-01
    ADAM            2013-01-01           2014-01-01
    ADAM            2014-01-01           2015-01-01
     
    17 ROWS selected.
    登录后复制
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号