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

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

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

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


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

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

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

Да это и в мануале написано. Я, наверное, вопросы не умею задавать.
В общем, мне бы хотелось узнать, была ли хоть одна строка модифицирована апдейтом, вызванным через EXECUTE.
...
Рейтинг: 0 / 0
20.07.2005, 13:30
    #33175715
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, pl/pgsql.
ппоищи по словам GET DIAGNOSTICS на форуме или в доке
...
Рейтинг: 0 / 0
23.07.2005, 10:06
    #33181116
glebofff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, pl/pgsql.
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
23.07.2005, 12:16
    #33181182
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, pl/pgsql.
вы заметите разницу на select

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

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

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

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

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

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

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


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