powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггеры и все вокруг них....
5 сообщений из 5, страница 1 из 1
Триггеры и все вокруг них....
    #32967840
Noor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочется создать универсальную триггерную функцию, т.е. вызывать ее от многих таблиц. В параметрах триггера указываю имя таблицы. Делаю так:
declare
tablename text;
begin
tablename:=tg_argv[0];

select * tablename....

И вот на селекте не происходит подстановка значения из переменной.

Можно ли это победить?
...
Рейтинг: 0 / 0
Триггеры и все вокруг них....
    #32968329
Fabrichenko Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может попробовать написать FROM ??? или если это опечатка попробуй передавать запрос как строку а потом его выполнять ... типа EXECUTE
-------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
Триггеры и все вокруг них....
    #32968465
Noor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, про from я знаю :)
Строка выглядит так: select * into myrec from tablename where ... ну и т.д.
Вот меня и интересует, может ли постгрес подставлять значение переменной в select или как можно это обойти.
...
Рейтинг: 0 / 0
Триггеры и все вокруг них....
    #32968729
Fabrichenko Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ж говорю делай строку запроса и выполняй ее с помощью EXECUTE

помоему нельзя так сразу имя таблицы подставить ... хотя не уверен надо в доке глянуть

можно имена переменных в параметры подставлять
-------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
Триггеры и все вокруг них....
    #32970642
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имя таблицы в запрос подставит можно только при вызове запроса через EXECUTE это особенность plpgsql .. но при этом на execute не запоминается план в отличии от обычных запросов , поэтому с execute медленнее. если скорость важна советую сделать несколько тригеров с захаркоженными именами таблиц вместо одного тригера с EXECUTE ... разница в скорости отличается в разы.
если кому то интересно почему имя таблицы можно только в execute подстовлять... то читайте доки..
Chapter 35. PL/pgSQL - SQL Procedural Language -> Owerview
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггеры и все вокруг них....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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