Postgresql - 如何创建具有整数值的版本列?

时间:2010-12-16 10:57:31

标签: postgresql

如何在表中创建一个具有整数值的列(当我插入一行时从0开始),每次更新一行时都会增加1?

我需要它将它用作乐观锁定。

感谢。

1 个答案:

答案 0 :(得分:3)

您需要使用触发器来实现此目的。 此

没有自动或内置解决方案
create table some_table
(
   id serial primary key, 
   some_data text, 
   version integer not null default 0
);

create or replace function increment_version()
  returns trigger
as
$body$
begin
  new.version := new.version + 1;
  return new;
end;
$body$
language plpgsql;

create trigger version_trigger
   before update on some_table
   for each row execute procedure increment_version();

请注意,触发器功能可用于包含名为version的列的任何表(即数字)。