【问题标题】:Equivalent to UNIQUE IDENTIFIER in PostgreSQL相当于 PostgreSQL 中的 UNIQUE IDENTIFIER
【发布时间】:2019-11-04 01:39:17
【问题描述】:

我试图从 MSSQL 切换到 PostgreSQL,因此尝试将查询转换为 PostgreSQL 等效项。但是运行 PostgreSQL 查询会报错:

错误:类型“uniqueidentifier”不存在第 3 行:ID UNIQUEIDENTIFIER DEFAULT UUID_GENERATE_V4()::VARCHAR NO... ^ SQL 状态:42704 字符: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 上遗漏了什么吗?

【问题讨论】:

标签: postgresql uuid sqldatatypes


【解决方案1】:

我们需要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)
);

【讨论】:

    【解决方案2】:

    这是正确的脚本:

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

    看到这个link。摘录:

    SQL Server 调用 UniqueIdentifier 类型,而 PostgreSQL 调用 输入 uuid。这两种类型都占用 16 字节的存储空间。为了兼容性 其他软件或数据库的原因,许多使用一些标准化 它们的文本表示,特别是用于运输而不是 使用原生类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 2020-02-13
      • 2013-07-25
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      相关资源
      最近更新 更多