select uuid_generate_v4() as one, uuid_generate_v4() as two;
"one" uuid 和 "two" uuid 相等!
CREATE TABLE "TB"
(
"Id" uuid NOT NULL DEFAULT uuid_generate_v4(),
"Title" character varying NOT NULL,
CONSTRAINT "TB_Class_ID" PRIMARY KEY ("Id")
);
PostgreSQL 9.0 和 pgAdmin 1.12.3。
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
或者
insert into "TB" ("Title") values ('111');
insert into "TB" ("Title") values ('111');
insert into "TB" ("Title") values ('111');
结果:
ERROR: duplicate key value violates unique constraint "TB_Class_ID"
DETAIL: Key ("Id")=(12ab6634-995a-4688-9a9a-ee8c3fe24395) already exists.
相比之下
postgreSQL maestro 9.2.0.4
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
insert into "TB" ("Id", "Title") values (uuid_generate_v4(), '111');
结果:1行受影响;
我理解maestro逐个添加记录,但为什么uuid_generate_v4()在两次调用后返回相同的值?(在pgAdmin情况下)。
如何通过一个请求添加多行?
SELECT random() AS one, random() AS two;
。无论我是否处于事务中,我都会得到两个不同的值。uuid_generate_v4
是一个VOLATILE
函数,因此我认为故障要么在uuid-ossp模块中,要么在底层库中。 - Joey Adams