项目里经常见到类似下面的语句: SELECT SEQ_PROJECT.NEXTVAL FROM DUAL 用于获取序列值。而自己并没有创建DUAL这个表,这个表是谁创建的呢,主要是用来做什么的呢? 下面是我找到的部分解释: DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。 DUAL中只有一行数据:'X'。 DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。 在Oracle数据库中创建一个序列,使表的PK顺序生成为表创建序列 CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 100; CREATE SEQUENCE NAD_PV_SEQU INCREMENT BY 1 START WITH 1807487 MAXVALUE 999999999999999999 NOCYCLE CACHE 100; 删除序列 DROP SEQUENCE NAD_PV_SEQU; 为表创建序列 CREATE SEQUENCE EMPSEQ ... ; SELECT empseq.currval FROM DUAL ; 自动插入序列的数值 INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK', 7902, SYSDATE, 1200, NULL, 20) ; |
| 责任编辑:仰易 |
|
|