Oracle 中的 UUID 数据类型

Mik*_*iNK 2 sql oracle uuid

我需要更改下表的规格:

CREATE TABLE STAGE.STG_AAA_PROFILES
(
  SUBSCRIBER         INTEGER,
  USERNAME           VARCHAR2(50 BYTE),
  GROUP_ID           INTEGER,
  PROFILE_ID         INTEGER,
  STATUS             INTEGER,
  PASSWORD_TYPE      INTEGER,
  EXPIRATION         DATE
)
Run Code Online (Sandbox Code Playgroud)

我必须让它看起来像:

CREATE TABLE STAGE.STG_AAA_PROFILES
(
  SUBSCRIBER         UID,
  USERNAME           VARCHAR2(50 BYTE),
  GROUP_ID           INTEGER,
  PROFILE_ID         UID,
  STATUS             INTEGER,
  PASSWORD_TYPE      INTEGER,
  EXPIRATION         DATE
)
Run Code Online (Sandbox Code Playgroud)

如何更改表以用 UID 数据类型替换整数???

MT0*_*MT0 6

Oracle 没有 UUID 数据类型。

要么使用:

  • VARCHAR2(36)将 UUID 存储为格式化的十六进制字符串(32 个十六进制字符和 4 个破折号);或者
  • RAW(16)将 UUID 存储为 16 字节(128 位)。

如何更改表以用 UID 数据类型替换整数?

ALTER TABLE STAGE.STG_AAA_PROFILES ADD subscriber_uuid VARCHAR2(36);
Run Code Online (Sandbox Code Playgroud)

然后将现有subscriber列从整数转换为 UUID 或为表中的行生成 UUID。最后:

ALTER TABLE STAGE.STG_AAA_PROFILES DROP COLUMN subscriber;
ALTER TABLE STAGE.STG_AAA_PROFILES RENAME COLUMN subscriber_uuid TO subscriber;
Run Code Online (Sandbox Code Playgroud)