powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу изменить поля в NEW в триггерной ф-ии.
3 сообщений из 3, страница 1 из 1
Не могу изменить поля в NEW в триггерной ф-ии.
    #39251674
avice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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;



Триггер :

Код: sql
1.
2.
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 во вставляемой записи?

Спасибо.
...
Рейтинг: 0 / 0
Не могу изменить поля в NEW в триггерной ф-ии.
    #39251685
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aviceДобрый день, коллеги.

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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;



Триггер :

Код: sql
1.
2.
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 во вставляемой записи?

Спасибо.

сказать триггеру , что он before , и больше не путать after и before -- это совсем разные случаи
...
Рейтинг: 0 / 0
Не могу изменить поля в NEW в триггерной ф-ии.
    #39251693
avice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq , огромное спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу изменить поля в NEW в триггерной ф-ии.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]