Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу изменить поля в NEW в триггерной ф-ии. 
:(
    Опции темы
avice
Дата 7.6.2016, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.6.2016

Репутация: нет
Всего: нет



Добрый день, коллеги.

Ранее не использовал триггеры в PostgreSQL. И столкнулся с непонятной проблемой.
Вот простая триггерная ф-ия :

Код

CREATE OR REPLACE FUNCTION code_translit_list_obj_entity() 
RETURNS TRIGGER AS 
$BODY$
DECLARE
    codetext text;
    nametext text;
BEGIN
 
    nametext := NEW.id::text;
    codetext := 'entity' || nametext;
    NEW.code := codetext;
 
    INSERT INTO test_log_proc ( text_1, text_2 ) VALUES ( nametext, codetext );
 
    RETURN NEW;
 
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;


Триггер :

Код

CREATE TRIGGER tr_code_translit_list_obj_entity
AFTER INSERT OR UPDATE ON list_obj_entity FOR EACH ROW EXECUTE PROCEDURE code_translit_list_obj_entity ();


Сама ф-ия срабатывает - в таблицу test_log_proc заносятся актуальные данные.
Но значение поля code в добавленной записи (а это NEW.code ) не изменяется (хотя, исходя из примеров, вроде как должно изменяться).
Подскажите, что я делаю не так?
Как мне изменить поле code во вставляемой записи?

Спасибо.
PM MAIL   Вверх
Akina
Дата 7.6.2016, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(avice @  7.6.2016,  10:48 Найти цитируемый пост)
что я делаю не так?

Триггер у тебя срабатывает AFTER INSERT OR UPDATE - т.е. когда значения уже занесены в таблицу. И что меняй их в NEW, что не меняй - второй раз не запишутся...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
avice
Дата 7.6.2016, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.6.2016

Репутация: нет
Всего: нет



Akina, огромное спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1032 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.