`

SYS_GUID()与sequence的比较【转】

阅读更多

序列生成器sequence所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关键字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。
SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。
此外,序列必须是DML陈述式的一部分,因此它需要一个到数据库的往返过程(否则它就不能保证其值是唯一的)。
SYS_GUID源自不需要对数据库进行访问的时间戳和机器标识符,这就节省了查询的消耗。  
  create table use_seq_table(id integer);
  create sequence use_seq_sequence;
  insert into use_seq_table values (use_seq_sequence_value.nextval);
  
  create table use_guid_table(id raw(16));
  insert into use_guid_table(sys_guid());
对象在不同机器的不同数据库里生成以及需要将数据合并到一起的情况下,SYS_GUID很有用。
SYS_GUID()与sequence的作用及用法基本相同,都可以放在bi触发器中使用。

-- Create sequence
create sequence SEQ_ADDRESS
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
nocache;

create or replace trigger tri_address_bi before insert on address for each row
begin
if :new.id<0 or :new.id is null then
select seq_address.nextval into :new.id from dual;
--select substr(sys_guid(),1,32) into :new.id from dual;
end if;
end;
/

使用限制:
SYS_GUID生成的值的另一个显著的不足之处是,管理这些值会变得困难得多。你必须(手动)输入它们或者通过脚本来填充它们,或者将它们作为Web参数来传递。  
出于这些原因,将SYS_GUID作为一个主关键字不是一个很好主意,除非是在一个并行的环境里或者希望避免使用管理序列生成器的情况下。
不过,使用SYS_GUID来做主键也不是不可以,但需要先转为 varchar2 较好。最好在使用时显示转换一下,如:substr(sys_guid(),1,32),直接使用RAW显然是不合适的。
直接插 raw 进入 varchar2 字段,发生隐式的转换,总不是太妥。曾见过因为大量隐式转换导致最后数据库崩溃,当然事后看是数据库的bug了。

分享到:
评论

相关推荐

    guid.zip_C# guid 算法_GUID 算法_guid 代码

    标签中的"c#_guid_算法 guid_算法 guid_代码"进一步强调了这个代码示例是关于`Guid`生成算法的实现。这意味着在压缩包内的`guid算法`文件很可能是C#源代码文件,里面可能包含了一个或多个自定义`Guid`生成器的类,...

    GUID.zip_guid_guid 生成器

    标题中的“GUID.zip_guid_guid 生成器”是一个用于创建全局唯一标识符(GUID)的工具,它模拟了Visual Studio(VS)内置的GUID生成功能。GUID,全称Globally Unique Identifier,是一种在大量分布式系统中确保每个...

    ZLXA_GUID.zip

    - **兼容性**:如果数据需要与其他系统交换,应确保生成的GUID符合对方系统的期望格式。 总的来说,"ZLXA_GUID.zip"提供的资源对于那些需要在Oracle数据库中生成全局唯一ID的应用程序非常有用,特别是当标准的序列...

    100 guid_guid1c_

    标题中的"100 guid_guid1c_"似乎指的是一个与GUID(全局唯一标识符)相关的工具或资源,特别是与"1c"这个特定环境或版本有关。描述中提到的"get guid 1c"进一步证实了这是一个获取或处理1C环境下的GUID的工具。1C...

    GUID Generator.rar_generator_guid_tool

    标题中的"GUID Generator.rar_generator_guid_tool"表明这是一个用于生成全局唯一标识符(GUID)的工具。GUID,全称Global Unique Identifier,是由微软公司提出的一种在分布式系统中保证唯一性的标识符标准。它由...

    vs2019_GUID生成工具.rar

    标签“GUID的工具”和“vs2019”进一步明确了这个压缩包的主要内容,它是一个与Visual Studio 2019相关的,用于生成GUID的独立工具。 压缩包中的文件“guidgen.exe”很可能就是我们要找的GUID生成器。这是一个可...

    PyPI 官网下载 | django_guid-0.2.1-py3-none-any.whl

    《PyPI与Django GUID库详解》 PyPI(Python Package Index)是Python开发者们发布、分享和查找Python软件包的官方平台。它为全球的Python开发者提供了丰富的库和工具,使得开发工作更加便捷高效。在PyPI官网上,...

    pdiusbd12.rar_PDIUSBD12 USB_USB SCH_d12_guid829_usb d12

    这个设备是基于Philips(现已被NXP半导体收购)的D12芯片,符合USB 1.1规范,且与GUID829相关的USB设备接口有关。"d12"可能指的是芯片型号或者版本号。 描述"USB 1.1 pilipls D12 fireware+software+sch"进一步确认...

    OracleGoldenGate针对表没有主键或唯一索引的解决方案[归类].pdf

    需要在 Oracle GoldenGate 中配置表,以便使用 SYS_GUID 列来唯一标识行。 3. 参考文献 本文档中使用的软件组件: * Oracle Database 10.2 或更高版本 * Oracle GoldenGate 10.4 或更高版本 附录 A: 示例表配置 ...

    GUID.rar_guid

    全局唯一标识符(GUID,Globally Unique Identifier)是一种在信息技术领域中广泛使用的标识符,特别是在软件开发、数据库设计和网络编程中。GUID是由128位数字组成的,通常以32位十六进制的形式表示,例如:`{...

    mysql_guid主键生成方式范例

    MySQL中的GUID(Globally Unique Identifier)主键生成方式是一种确保数据库中每一条记录具有唯一标识的方法,尤其在分布式系统中十分常见。本示例主要介绍如何通过Hibernate框架配置,来实现MySQL数据库中GUID主键...

    guid.zip_The Hidden_guid

    This is a Visual Basic 6 project that creates a GUID. It contains the function "CreateGUIDStr()". This function returns a GUID. The function calls some APIs, but this work is hidden from the user. ...

    C#_GUID图片处理demo

    在本"C#_GUID图片处理demo"项目中,开发者运用了C#编程语言来实现了一系列的图片处理功能,包括但不限于转换图片为黑白效果和柔化处理。这些功能在图像处理领域有着广泛的应用,例如照片编辑、艺术创作以及图像分析...

    ORCALE语句大全

    - 创建触发器: `create trigger student_trigger before insert on student for each row when(new.SNo is null) begin select student_sequence.nextval into:new.SNo from dual;end;` - 插入记录: `insert into ...

    JBPM_Users_Guid

    该组件处理与流程相关的身份验证和授权逻辑。例如,它可以确定哪些用户或角色能够执行特定的任务。 ##### 6. JBoss jBPM Job Executor 这是一个后台服务,负责调度和执行流程中的异步任务。 #### 三、教程示例 ...

    netcore_guid3.1.pdf

    标题和描述提及了“netcore_guid3.1.pdf”,文档的标题暗示了文档是一个关于.NET Core 3.1的指导手册或指南。.NET Core 3.1是一个广泛使用的开源、跨平台的.NET实现,用于创建现代网络应用、云服务以及其他应用程序...

    user_guid.rar

    芯片后端综合流程工具DC 的uer guid、布局布线 ICC uer guid。 包含综合布局布线 基本流程、优化手段。也可以作为命令查询手册,包含基本tcl命令。做综合、ICC 等后端人员必备手册

    driver_Source.rar_guid829

    标题中的"driver_Source.rar_guid829"暗示了这是一个与驱动程序源代码相关的压缩包,可能包含一个特定的示例项目或教程,其中"guid829"可能是该资源的唯一标识符或者是某个特定版本的标记。描述指出是"D12 DDK 的...

    Guid-Generator.rar_guid

    VB.NET Guid 号码生成器代码,每点击一次按钮,即可生成一个GUID码,代码基于VS.NET2010环境,测试请先生成项目源码,然后运行Bin/Debug目录下的GuidGenerator.exe文件即可。运行界面如上图所示

Global site tag (gtag.js) - Google Analytics