等效于PostgreSQL中的UNIQUE IDENTIFIER

时间:2019-06-21 08:16:16

标签: postgresql uuid sqldatatypes

我试图从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 上缺少什么吗?

2 个答案:

答案 0 :(得分:1)

这是正确的脚本:

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

请参阅此link。提取:

  

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

答案 1 :(得分:0)

我们需要 UUID ,它可以按以下方式使用:

dbms.directories.data=path/neo4jDatabases/database-abc/installation-3.5.5/data