一、identity(SQL SERVER)——增列
二、ORACLE——sequence
-
序列是用于生成唯一、连续序号的对象
-
序列可以是升序的,也可以是降序的
-
使用CREATE SEQUENCE语句创建序列
SQL> CREATE SEQUENCE stu_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2000 MINVALUE 1 NOCYCLE CACHE 10;---指定内存中预先分配的序号数 ,提前计算好放入内存中,不用每次都要oracle进行计算,如果不写,默认20
三、查看创建序列的权限-当前用户有什么角色
SQL>select * from dba_role_privs d where d.grantee='SCOTT'——sys查询其他用户具有当前角色
SQL>select * from use_role_privs——当前用户查询自己的当前角色
SQL>select * from role_sys_privs——角色具有的系统全下
从上述看,用用RESOURCE权限,就可以创建序列(create sequence)
四、创建序列,并查询
SQL>select * from user_sequences;
五、 序列从大到小计算
SQL>create sequence suq44 start with 1000 increment by -1 maxvalue 1000;
六、如何使用序列——访问序列
-
通过序列的伪列来访问序列的值
1、 NEXTVAL 返回序列的下一个值
2、CURRVAL 返回序列的当前值
3、第一次使用序列中的值的时候,要使用NEXTVAL
SQL>select stu_seq.currval from dual;——第一次,无法使用currval
七、实用
1、创建表,并插入序列
2、以代表如下方式写入
student sno
2020_001
2020_002
'2010_'||tochar(stu_seq.nextval)
SQL> insert into student values(stu_seq.nextval,'2010_' || to_char(stu_seq.nextval));
文章评论