【问题标题】:Is there a way to create an auto-incrementing Guid Primary Key in an Oracle database?有没有办法在 Oracle 数据库中创建一个自动递增的 Guid 主键?
【发布时间】:2010-02-17 22:03:31
【问题描述】:

我主要使用 sql-server(当我使用数据库时)并且我正在尝试学习 pl-sql。

有没有相当于sql-server自动生成的Guid作为Oracle中的主键?

【问题讨论】:

    标签: sql oracle plsql guid uuid


    【解决方案1】:

    您可以使用SYS_GUID() 生成GUID,并将其用作列的DEFAULT 值:

    CREATE TABLE test_table (
      uid_col RAW(32) DEFAULT SYS_GUID(),
      some_val VARCHAR2(10)
    );
    

    编辑: 有关详细信息,请参阅this question 的答案。

    【讨论】:

    • 您还必须编写一个触发器以确保未提供用户或应用程序提供的 RAW(32),否则您可能会遇到键冲突。即使这也不是完全确定的,因为可以禁用触发器,并且某些应用程序(如直接路径模式下的 SQL*Loader)可以完全忽略触发器。我并不是说彼得的解决方案不是最好的。只是 Oracle 并没有真正允许完全由系统生成的密钥。
    • 这还不够,您需要在列uid_col上添加主键约束以保持值的唯一性。
    【解决方案2】:

    使 char 或 varchar2 列数据类型过于原始,以免将来遇到麻烦。

    【讨论】:

    • 我相信你应该解释一下这将如何帮助解决未来的麻烦。
    猜你喜欢
    • 2011-03-12
    • 2019-01-09
    • 2020-03-25
    • 2022-06-21
    • 1970-01-01
    • 2011-02-05
    • 2019-12-10
    • 2020-11-20
    • 2015-03-05
    相关资源
    最近更新 更多