У меня есть стол test
с колоннами id
, data
в базе данных PostgreSQL.
Я создал триггер AFTER INSERT
называется insert_test
который запускает функцию с тем же именем.
Вставка SQL из PHP это:
insert into test (data) values ('try') returning 'variables' as temp;
Как я могу получить доступ к полученным значениям в temp
внутри функции PL / pgSQL?
Этот запрос немного неоднозначный, поэтому мой ответ будет общим. Результат для RETURNING
Предложение рассчитывается динамически и отправляется клиенту немедленно. Таким образом, вы не можете коснуться этих значений из PL / pgSQL. Но все значения из таблиц доступны в триггерных функциях через переменные записи NEW
или же OLD
— так что вы можете пересчитать любое выражение.
CREATE TABLE foo(a int, b int);
CREATE OR REPLACE FUNCTION foo_trig()
RETURNS TRIGGER AS $$
BEGIN
RAISE NOTICE '<<%>>', NEW.a + NEW.b;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER foo_t AFTER INSERT ON foo
FOR EACH ROW EXECUTE PROCEDURE foo_trig();
postgres=# INSERT INTO foo VALUES(10,20) RETURNING a + b;
NOTICE: <<30>>
┌──────────┐
│ ?column? │
╞══════════╡
│ 30 │
└──────────┘
(1 row)
Других решений пока нет …