比较来自世界各地的卖家的域名和 IT 服务价格

postgreSQL uuid 一代

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/.

如何在一个请求中添加几行?
已邀请:

董宝中

赞同来自:

在过去的某个时刻
uuid_generate_*

被错误地标记了
IMMUTABLE

, 什么会导致行为 , 你展示了哪个。 它在所有最新的辅助版本中修复,但您需要重新启动安装脚本 /
uuid-ossp.sql

/, 获得更新的函数。 /您也可以查看安装脚本以确保您有版本 up-to-date. 功能应标记
VOLATILE

./

董宝中

赞同来自:

作为此交易的一部分,该函数
uuid_generate_v4//

返回相同的值。

当运营商被分组并执行一样 "一个组", 有一个交易,所以每一个电话
uuid_generate_v4//

将返回相同的值。

有两种方法可以做到::

每次使用此功能时都会进行单独的数据库调用。 /这是最简单的方法/

使用连接而不自动固定/犯罪/, 在哪里控制事务并在一对中共享每次使用
BEGIN; COMMIT

/这是麻烦的 - 除非你需要,否则不要这样做/

詹大官人

赞同来自:

为避免重复,可以使用如下:


select md5/random//::text || clock_timestamp//::text/::uuid AS new_id, id from table;


但要小心:它会产生 UUID, 但这不是 UUIDv4. 阅读更多:
https://coderoad.ru/12505158/

要回复问题请先登录注册