Postgresql - как я могу создать версию столбца с целочисленным значением? - PullRequest
2 голосов
/ 16 декабря 2010

как мне создать в таблице столбец с целочисленным значением (начиная с 0, когда я вставляю строку), который будет увеличиваться на 1 каждый раз, когда я обновляю строку?

Мне нужно использовать его как оптимистическую блокировку.

Спасибо.

1 Ответ

3 голосов
/ 16 декабря 2010

Вам нужно будет использовать триггер для достижения этой цели. Для этого не существует автоматического или встроенного решения

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 (то есть число).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...