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 по дате отправления: