powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер, pl/pgsql.
9 сообщений из 9, страница 1 из 1
Триггер, pl/pgsql.
    #33175031
glebofff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо бы в UPDATE подставить TG_RELNAME , но что-то не получается.

Ругается, в запросе вместо имени таблицы $1.

Если выполнять EXECUTE , то всё хорошо, только специальная переменная FOUND не меняет своего значения.

Что делать? :-)
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33175393
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glebofff Что делать? :-)
застрелицца из духового ружжа.


ЗЗЫ . попробуйте привести сами тексты. Авось будут более внятны.
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33175611
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вместо имени таблицы $1

вместо имени таблицы нельзя вставлять переменную если вы делаете запрос не через EXECUTE
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33175665
glebofff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabr вместо имени таблицы $1

вместо имени таблицы нельзя вставлять переменную если вы делаете запрос не через EXECUTE

Да это и в мануале написано. Я, наверное, вопросы не умею задавать.
В общем, мне бы хотелось узнать, была ли хоть одна строка модифицирована апдейтом, вызванным через EXECUTE.
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33175715
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ппоищи по словам GET DIAGNOSTICS на форуме или в доке
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33181116
glebofff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabrппоищи по словам GET DIAGNOSTICS на форуме или в доке

В общем, работает. Теперь мне вот что интересно... В мануале пишут:

...
Because PL/pgSQL saves execution plans in this way, SQL commands that appear directly in a PL/pgSQL function must refer to the same tables and columns on every execution; that is, you cannot use a parameter as the name of a table or column in an SQL command. To get around this restriction, you can construct dynamic commands using the PL/pgSQL EXECUTE statement — at the price of constructing a new execution plan on every execution.


Т.е. вся потеря времени при динамических запросах - это выяснить OID таблицы/и т.д.? Вообще, особой разницы по времени не обнаружил (а вставка в таблицу от 10 до 50 тысяч строчек за раз), что простой update, что через execute - работают одинаково быстро.

Короче, есть ли смысл создавать для однотипных табличек свою функцию-триггер, когда можно использовать одну - на всех? :-)
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33181182
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вы заметите разницу на select

вы в триггере хотите апдейтить другую таблицу? если так то это может потом вылезти боком
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33181304
glebofff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabrвы заметите разницу на select
Т.е.?

vfabr
вы в триггере хотите апдейтить другую таблицу? если так то это может потом вылезти боком

Каким боком? Не говорите загадками.
...
Рейтинг: 0 / 0
Триггер, pl/pgsql.
    #33181346
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запросы кэшируются в базе и в следующий раз когда вы посылаете анналогичный запрос но с другими параметрами база не строит план выполнения заново а использует готовый.

если интересно ищите в дркументации про PREPARE STATEMENT или как то так (подготовленные запросы)

соответственно на инсертах это не так критично как на селектах

если вы делаете EXECUTE то для каждого запроса план строится по новой если даже это один и тот же запрос

про триггер
например вы вешаете триггер на инсерт изменить запись в другой таблице
у вас большой объем вставляемых данных может все жутко тормозить
лучше сначала все вставить а потом запустить апдейт всего вставленного
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер, pl/pgsql.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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