SELECT SYS_GUID() AS idPoints FROM DUAL数据库
Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列(sequence)相比具备诸多优点。一个序列生成器只是简单地建立从给定的起点开始的一系列整数值,并且它被用在选择陈述式的时候自动地递增该系列。htm
序列生成器所生成的数字只能保证在单个实例里是惟一的,这就不适合将它用做并行或者远程环境里的主关键字,由于各自环境里的序列可能会生成相同的数字,从而致使冲突的发生。SYS_GUID会保证它建立的标识符在每一个数据库里都是惟一的。对象
序列必须是DML陈述式的一部分,所以它须要一个到数据库的往返过程(不然它就不能保证其值是惟一的)。SYS_GUID源自不须要对数据库进行访问的时间戳和机器标识符,这就节省了查询的消耗。get
不少应用程序都依靠序列生成器来建立数据行的主关键字,这些数据行没有一个明显的主值,这也就是说,在这样的数据集里一条记录的建立就会让数据列发生改变。所以,管理员可能会对在表格中将SYS_GUID用做主关键字而不使用序列数感兴趣。这在对象在不一样机器的不一样数据库里生成以及须要在后来合并到一块儿的状况下颇有用。程序
可是,SYS_GUID所生成的值是一个16个字节的原始值。序列所生成的整数不会使用16字节(的值),除非它达到了10的30次方(每一个字节两个16进制显示位),并且数字是至关独特的:并行