UID只是数据库的一个记录号,每个数据库的记录号不一样,类似于ROWID、ROWNUM。
SELECT duusername, duuser_id
FROM dba_users du
11
因为序列是所有对象共同使用的
使用序列优点是可以自动生成,不会出现重复,
遗憾的就是多个会出现 id不续的情况
因为只要用到了sequencenextval就会把 序列的当前值加1
伪列的数据是由ORACLE进行维护和管理的,用户不能对这个列修改,只能查看。
所有的伪列要得到值必须要显式的指定。
最常用的两个伪列:rownum和rowid。
1、
ROWNUM(行号):是在查询 *** 作时由ORACLE为每一行记录自动生成的一个编号。
每一次查询ROWNUM都会重新生成。(查询的结果中Oracle给你增加的一个编号,根据结果来重新生成)
rownum永远按照默认的顺序生成。(不受order by的影响)
rownum只能使用 <、 <= ,不能使用 > 、>= 符号,原因是:Oracle是基于行的数据库,行号永远是从1开始,即必须有第一行,才有第二行。
2、
ROWID(记录编号):是表的伪列,是用来唯一标识表中的一条记录,并且间接给出了表行的物理位置,定位表行最快的方式。
主键:标识唯一的一条业务数据的标识。主键是给业务给用户用的。不是给数据库用的。
记录编号rowid:标识唯一的一条数据的。主要是给数据库用的。类似UUID。
一、主键id自增
oracle 中不能设置自动增加,这个和其他数据库不一样,但是有 序列,这个是Oracle自己特有的东西,
1、首先创建序列:create sequence seq;
语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制
比CREATE SEQUENCE seq start with 1 increment by 1; --建立了额从1开始每次加1序列
访问序列时用 序列名称nextval语法
这就创建好了,然后 seqnextval 就会返回一个值,不会重复的值,
insert into tablename values(seqnextval,'test');
insert into tablename values(seqnextval,'test');
insert into tablename values(seqnextval,'test');
这样前3个id 分别是 1,2,3
二、自动生成UUID策略
import javautilUUID;
Student s = new Student();
ssetId(UUIDrandomUUID()toString());
有点类似JAVA用的UUID,你说的是Uniqueidentifier这个数据类型吧?其实他是对一列数据的描述,这列数据可以把表中数据设定具有唯一性,oracle中建议你使用MD5码这样的,你可以把数据都拿过来放到16个字节字段里面
以上就是关于oracle uid函数有什么用全部的内容,包括:oracle uid函数有什么用、oracle多个表共用一个序列生成Id的问题、在ORACLE数据库中什么叫伪列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)