我正在尝试使用PostgreSQL 9.3版本将UUID值存储到我的表中。
示例:
create table test
(
uno UUID,
name text,
address text
);
insert into test values(1,'abc','xyz');
注意:如何将整数值存储到UUID类型?
答案 0 :(得分:8)
UUID的重点在于它们是自动生成的,因为使用虚拟的算法可以保证它们在您的表,数据库甚至数据库中都是唯一的。 UUID存储为16字节的基准,因此当您满足以下一个或多个条件时,您真的只想使用它们:
INSERTS
在一个"系统"它分布在多台机器上,每台机器都有自己的本地数据库)时,中央ID生成不是可行的(例如,连接有限的移动数据收集系统,稍后上传到中央服务器)。如果其中一种情况适用于您,那么您最好将UUID用作主键并自动生成:
CREATE TABLE test (
uno uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
name text,
address text
);
像这样你永远不必担心UUID本身,这一切都是在幕后完成的。您的INSERT
声明将变为:
INSERT INTO test (name, address) VALUES ('abc','xyz') RETURNING uno;
如果您想使用RETURNING
子句来引用相关数据,那么{{1}}子句显然是可选的。
答案 1 :(得分:3)
不允许将cast
integer
简化为UUID
类型。通常,UUID
内部生成Postgres
(有关此方法的详细信息,请参阅http://www.postgresql.org/docs/9.3/static/uuid-ossp.html)或通过客户端程序生成。{/ p>
如果您只需要桌面本身的唯一ID,但实际上并不需要UUID
(这些是针对通用唯一性,跨表和服务器等。 ),您可以使用serial
类型,为您创建隐式sequence
,当您INSERT
进入表格时会自动递增。