postgresql – Postgres中UUID列的默认值
在
Postgres 9.x中,对于类型为
UUID 的列,如何指定要自动生成的UUID作为任何行插入的默认值?
生成UUID所需的插件
虽然Postgres开箱即用支持在其本机128-bit表单中存储UUID (Universally Unique Identifier)值,但生成UUID值需要插件.在Postgres中,插件称为扩展. 要安装扩展,请致电 我们想要的扩展是一个用C语言构建的开源库,用于处理UUID,OSSP uuid.build of this library for Postgres经常捆绑Postgres的安装,例如Enterprise DB到Enterprise DB,或者包括在云提供商(如Amazon RDS for PostgreSQL)中. CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; 生成各种UUID 请参阅extension’s doc以查看为生成各种UUID值而提供的多个命令的列表.要获取从计算机的MAC address加上当前日期时间加上一个小随机值构建的UUID的原始版本,请致电 SELECT uuid_generate_v1();
后来对这个主题的变化是为其他类型的UUID开发的.有些人可能不想记录服务器的实际MAC地址,例如,出于安全或隐私问题. Postgres扩展生成五种UUID,加上“nil”UUID 00000000-0000-0000-0000-000000000000. UUID作为默认值 可以自动进行该方法调用,以便为任何新插入的行生成默认值.定义列时,请指定:
请参阅以下示例表定义中使用的命令. CREATE TABLE public.pet_ ( species_ text NOT NULL,name_ text NOT NULL,date_of_birth_ text NOT NULL,uuid_ uuid NOT NULL DEFAULT uuid_generate_v1(),-- <==== CONSTRAINT pet_pkey_ PRIMARY KEY (uuid_) ) WITH ( OIDS=FALSE ); ALTER TABLE public.pet_ OWNER TO postgres; UUID版本 uuid-ossp插件可以生成various versions of UUID. > uuid_generate_v1()包含当前计算机当前时刻的MAC address.常用,但如果您对披露数据库服务器的MAC或生成此值的时间敏感,请避免使用.由规范定义为Version 1 UUID. 要比较类型,请参阅问题,Which UUID version to use? 如果您对第3版和第3版感到好奇5,见本课题,Generating v5 UUID. What is name and namespace?. 有关更多讨论,请参阅my Answer至类似问题和我的博客文章UUID values from JDBC to Postgres. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |