相当于 PostgreSQL 中的 UNIQUE IDENTIFIER

Equivalent to UNIQUE IDENTIFIER in PostgreSQL

我试图从 MSSQL 切换到 PostgreSQL,因此试图将查询转换为 PostgreSQL 等价物。但是 运行 PostgreSQL 查询给出错误:

ERROR: type "uniqueidentifier" does not exist LINE 3: ID UNIQUEIDENTIFIER DEFAULT UUID_GENERATE_V4()::VARCHAR NO... ^ SQL state: 42704 Character: 38

MSSQL

CREATE TABLE [dbo].[ISS_AUDIT]
(
  [ID] UNIQUEIDENTIFIER DEFAULT NEWID() NOT NULL,
  [GRAPH_ID] [varchar](196)
  PRIMARY KEY(ID)
);

PostgreSQL

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE public.ISS_AUDIT
(
  ID UNIQUEIDENTIFIER DEFAULT UUID_GENERATE_V4()::VARCHAR NOT NULL,
  GRAPH_ID VARCHAR(196),
  PRIMARY KEY(ID)
);

我在 UNIQUEIDENTIFIER 上遗漏了什么吗?

我们需要UUID,可以如下使用:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE public.ISS_AUDIT(
  ID UUID DEFAULT UUID_GENERATE_V4()::UUID NOT NULL,
  GRAPH_ID VARCHAR(196),
  PRIMARY KEY(ID)
);

这是正确的脚本:

CREATE TABLE public.ISS_AUDIT
(
  ID uuid PRIMARY KEY DEFAULT UUID_GENERATE_V4(),
  GRAPH_ID VARCHAR(196)
);

看到这个 link。摘录:

SQL Server calls the type UniqueIdentifier and PostgreSQL calls the type uuid. Both types occupy 16-bytes of storage. For compatibility reasons with other software or databases, many use some stanardized text representation of them particularly for transport rather than using the native type.