Postgresql学习笔记之——特殊类型(UUID)

一、UUID类型

UUID(Universally Unique Identifiers)用于存储一个UUID,UUID定义是一个128bit的数字。
Postgresql提供了UUID类型的比较运算符,例如:

postgres=# select uuid '1b34eaba-0d59-11e4-bf51-dc85de4d74f3' < uuid '1e0e95b0-0d59-11e4-bf51-dc85de4d74f3';
 ?column? 
----------
 t
(1 row)

虽然在Postgresql中没有提供直接的UUID生成函数,但是在contrib下的uuid-ossp模块提供了产生UUID函数。可以通过一下方式来生成UUID:
1.先安装系统os依赖包uuid、uuid-devel:

yum -y install uuid uuid-devel

安装完成可能 uuid-devel包没有,我使用Centos 6.5配置本地yum源(没有互联网)在使用yum安装时没有uuid-devel依赖包,因此我从网上下载了一个rpm包(参考网址:https://centos.pkgs.org/6/centos-x86_64/uuid-devel-1.6.1-10.el6.x86_64.rpm.html),然后使用rpm进行安装:

rpm -ivh uuid-devel-1.6.1-10.el6.x86_64.rpm

2.依赖包安装完成后,进行预编译(postgresql的源码包我还留着,进到源码包后再次进行编译):

./configure --prefix=/data/pg12.1 --with-uuid=ossp

注意:我PG安装目录是/data/pg12.1

3.进入源码包的contrb文件夹下的uuid-ossp目录下,进行gmake && gmake install :

cd contrib/uuid-ossp
gmake clean
gmake
gmake install

注意:我在安装PG时用的make install-world方式安装了contrib下所有插件,因为没有依赖包uuid、uuid-devel,所以没有成功安装uuid-ossp,所以我需要gmake clean清除一下。顺便说一下,如果在安装PG时安装了依赖包,那么就不需要在进行1~3步骤。直接进行第四步。如果在进行第4步时报如下错误,则说明没有成功安装uuid-ossp插件,还需要从第1步开始:
postgres=# create extension “uuid-ossp”;
ERROR: could not open extension control file “/data/pg12.1/share/postgresql/extension/uuid-ossp.control”: No such file or directory

4.登录postgresql,执行create extension,然后可以通过uuid_generate_v4()生成uuid:

[postgres@local130 ~]$ psql -U postgres -W -d postgres
psql (12.7)
Type "help" for help.

xzxt=# create extension "uuid-ossp";
CREATE EXTENSION
xzxt=# select uuid_generate_v4();
           uuid_generate_v4           
--------------------------------------
 b1cd147b-d39e-4805-8c09-dcfb7cf19737
(1 row)



注意:需要在哪个库下使用uuid就在登陆哪个库下执行,一般登陆时指定-d参数到指定的库下执行create extension,会在指定的库下的public模式下创建,并可以使用uuid,执行后会在指定的库的public模式的function中看到uuid开头的函数:

xzxt=# \df
                                                                         List of functions
 Schema |        Name        | Result data type  |                                           Argument data types                                            | Type 
--------+--------------------+-------------------+----------------------------------------------------------------------------------------------------------+------
 public | fn_xxcj_ngzbhzh    | character varying | unitcode character varying, tblname character varying, lrsj character varying, headstr character varying | func
 public | fn_xxcj_xxzjbh     | character varying | unitcode character varying, strdate character varying                                                    | func
 public | uuid_generate_v1   | uuid              |                                                                                                          | func
 public | uuid_generate_v1mc | uuid              |                                                                                                          | func
 public | uuid_generate_v3   | uuid              | namespace uuid, name text                                                                                | func
 public | uuid_generate_v4   | uuid              |                                                                                                          | func
 public | uuid_generate_v5   | uuid              | namespace uuid, name text                                                                                | func
 public | uuid_nil           | uuid              |                                                                                                          | func
 public | uuid_ns_dns        | uuid              |                                                                                                          | func
 public | uuid_ns_oid        | uuid              |                                                                                                          | func
 public | uuid_ns_url        | uuid              |                                                                                                          | func
 public | uuid_ns_x500       | uuid              |                                                                                                          | func
(12 rows)

二、pg_lsn类型

pg_lsn类型时PG9.1之后提供的表示LSN(Log Squence Number)的一种数据类型,LSN表示WAL日志的位置,在一些记录WAL日志信息的系统表中某些字段类型可以用pg_lsn类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Major_ZYH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值