Re: обновляющи

Поиск
Список
Период
Сортировка
От Андрей Зевакин
Тема Re: обновляющи
Дата
Msg-id 43539824.7090909@tsogu.ru
обсуждение исходный текст
Ответ на обновляющий тригер  (Genix <genix@list.ru>)
Список pgsql-ru-general
Genix пишет:

> Приветствую!
>
> Подскажите пожалуйста, как правильнее создать триггер, который
> обновляет некоторые поля обновленной или вставленной записи?
>
> т.е., например, в таблице, должно быть поле birth_year =
> YEAR(birth_date), и при вставки/обновлении записи в таблице, это
> значение должно заполняться.
>
я бы сделал вот так
CREATE TABLE persons
(
  name varchar,
  birth_date date,
  name_upper varchar,
  birth_year int4
) ;

CREATE FUNCTION check_person_trigger_function() RETURNS "trigger" AS '
begin
  if new.name is not null then
    new.name_upper := upper(new.name);
  end if;

  if new.birth_date is not null then
    new.birth_year := extract(year from new.birth_date);
  end if;

  return new;
end;
' LANGUAGE 'plpgsql' VOLATILE;

CREATE TRIGGER check_persons_trigger BEFORE INSERT OR UPDATE
   ON persons FOR EACH ROW
   EXECUTE PROCEDURE public.check_person_trigger_function();

insert into persons (name, birth_date) values ('Юра', '10.10.1970');
select * from persons;

update persons set name = 'Юрий', birth_date = '10.10.1971';
select * from persons;


В списке pgsql-ru-general по дате отправления:

Предыдущее
От: "Viktor Vislobokov"
Дата:
Сообщение: Re: обновляющи
Следующее
От: Genix
Дата:
Сообщение: Re: обновляющи