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

res*_*es1 8 postgresql

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

我需要它来使用它作为乐观锁定。

谢谢。

小智 6

您将需要使用触发器来实现此目的。对此没有自动或内置的解决方案

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();
Run Code Online (Sandbox Code Playgroud)

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

  • 触发器_是_内置解决方案:) (3认同)