Answers:
呼叫DEFAULT定义列调用的一个时OSSP UUID功能。每次插入行时,Postgres服务器都会自动调用该函数。
CREATE TABLE tbl 
(
  pkey UUID NOT NULL DEFAULT uuid_generate_v1() , 
  CONSTRAINT pkey_tbl PRIMARY KEY ( pkey )
)尽管Postgres开箱即用支持以其本机128位格式存储 UUID(通用唯一标识符)值,但生成 UUID值需要使用插件。在Postgres中,插件称为。extension
要安装扩展程序,请致电CREATE EXTENSION。为避免重新安装,请添加IF NOT EXISTS。有关更多详细信息,请参见我的博客文章,或在StackOverflow中查看此页面。
我们想要的扩展是一个用C内置的开源库,用于处理UUID,OSSP uuid。甲此库的Postgres生成通常与的Postgres的安装捆绑诸如提供的图形安装由企业DB或包括在由云提供商如亚马逊RDS对PostgreSQL。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";请参阅扩展文档,以查看提供的用于生成各种UUID值的多个命令的列表。要获取从计算机的MAC地址加上当前日期时间加上一个小的随机值构建的UUID的原始版本,请致电uuid_generate_v1()。
SELECT uuid_generate_v1();672124b6-9894-11e5-be38-001d42e813fe
此主题的后续变体是为其他种类的UUID开发的。例如,出于安全性或隐私方面的考虑,某些人可能不想记录服务器的实际MAC地址。Postgres扩展生成五种UUID,以及“ nil” UUID 00000000-0000-0000-0000-000000000000。
可以自动进行该方法调用,以为任何新插入的行生成默认值。定义列时,请指定:
DEFAULT uuid_generate_v1()
请参阅以下示例表定义中使用的命令。
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_generate_v1()uuid_generate_v1mc()uuid_generate_v3( namespace uuid, name text )uuid_generate_v4()uuid_generate_v5( namespace uuid, name text )uuid_nil()00000000-0000-0000-0000-000000000000。用作未知UUID值的标志。称为nil UUID。要比较类型,请参阅问题,使用哪个UUID版本?
如果您对版本3和5感到好奇,请参阅此问题,生成v5 UUID。什么是名称和名称空间?。
有关更多讨论,请参见我对类似问题的解答和我的博客文章,从JDBC到Postgres的UUID值。
getObject()也可以使用UUID id = rs.getObject("uuid_", UUID.class);
                    只是罗勒(Basil)非常详细的答案的一小部分:
由于目前大多数正在使用pgcrypto,而不是uuid_generate_v1()你可以使用gen_random_uuid()一个版本4的UUID值。
首先,在您的Postgres中启用pgcrypto。
CREATE EXTENSION "pgcrypto";
只需将列的DEFAULT设置为
DEFAULT gen_random_uuid()