postgresql的每个表都有个内置的、隐藏的字段xmin,存储的是修改时或插入时的xid(transaction id),只要该行一被修改,该XMIN就有变化,不信大家可以尝试一下。
(XMIN会+1)
所以实际应用中可以将xmin当作表的时间戳来处理。在C/S结构的应用设计中,我们常常有这样的流程:
1,下载表的一个记录(不锁定)
2,让客户端对这个缓冲进行交互式的修改
3,提交更新时,要先检测这个记录是否被其他用户修改(此时锁定),假如这个记录被其他用户所修改,则不提交修改,否则提交缓冲。
这个流程类似于ado的batch update。在VFP中,这叫乐观锁定远程视图.
在比较缓冲是否被其他用户修改时,有2种比较方法,1种是只比较本地所修改的字段,另外1种是比较所有的字段。
假如是第2种,就可以用时间戳来比较,以下是例子
1。下载表的一个记录(不锁定)SELECT *, XMIN AS OLD_XMIN FROM XXX WHERE ...
2. 让客户端对这个缓冲进行交互式的修改
3. 提交更新时,
begin transaction;
select * , xmin as new_xmin from xxx where .... for update
if new_xmin <> old_xmin then
-- 已被他人修改,抛出错误或其他流程
rollback
else
update xxx set xxx=xxx where ...
commit
end
假如你的接口不接受xid数据类型, 可以将xid转换为integer,语句为cast(xmin as integer), 两者在postgresql内部都是同一类型, 不过xid 到 integer的类型转化不是postgresql内嵌的,所以还需要自定义这种转换
create cast (xid as integer) without function.
如果没有以上语句, cast(xmin as integer)可能不成功.
http://edu.codepub.com/2009/1130/18345.php
分享到:
相关推荐
PostgreSQL中数据类型的思维导图,Xmind格式。包括以下分类,数值类型,货币类型,字符类型,日期时间类型,布尔类型,枚举类型,几何类型,网络地址类型,位串类型,文本搜索类型,UUID类型,XML类型,JSON类型,...
智能手表.xmind
XMind有4个版本:XMind Free(免费版), XMind Plus(增强版), XMind Pro(专业版), 和XMind Pro Subscription(专业订阅版)。其中,XMind Free是一款开源软件,作为基础版本,其虽然免费,但功能强大,并在...
xmind
欢迎使用XMind_xmind模板.xmind
Gitxmind GIt bash 使用 xmindGitxmind GIt bash 使用 xmindGitxmind GIt bash 使用 xmindGitxmind GIt bash 使用 xmindGitxmind GIt bash 使用 xmindGitxmind GIt bash 使用 xmind
Xmind使用教程,Xmind使用教程课件,Xmind使用教程PPT
登录测试点.xmind
在测试领域中,XMind 被广泛用于制作...加载 XMind 文件:使用 xmind.load() 方法加载 XMind 文件,将 XMind 文件转换为树形结构。 解析 XMind 数据:使用 xmind_to_dict() 方法解析 XMind 数据,将其转换为列表形式
链表特点
xmind使用文件以及手册,方便更改的学习使用xmind
Vue使用手册.xmind
HTML知识点速记,请搭配博客使用,注意是xmind文件。HTML知识点速记,请搭配博客使用,注意是xmind文件。HTML知识点速记,请搭配博客使用,注意是xmind文件。HTML知识点速记,请搭配博客使用,注意是xmind文件。HTML...
vscode使用教程 快捷方式等 简单易上手,适合新手
xmind使用_xmind模板.xmind
xmind-8-update7-windows.exe 下载路径:https://www.xmind.net/download/win/ 1.首先要断网 2.打开"c:\windows\system32\drivers\etc",以文本方式打开hosts,添加以下内容 # XMind Mind-Mapper 0.0.0.0 xmind...
IDEA快捷键.xmind
ARP.xmind BFD.xmind BGP.xmind DHCP.xmind FTP.xmind IGP之间的区别.xmind IPv4报文与IPv6报文的区别.xmind IPv6.xmind IP业务--可靠性.xmind IS-IS.xmind list.txt MPLS.xmind mpls路由传递及转发过程...
VBA_xmind模板.xmind
使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库...