[英]Retrieve returning row of INSERT in PL/pgSQL
我有一個名為表test
與列id
, data
PostgreSQL數據庫中。
我創建了一個名為insert_test
的觸發器AFTER INSERT
,它啟動了一個同名的函數。
PHP中的插入SQL是這樣的:
insert into test (data) values ('try') returning 'variables' as temp;
如何在PL / pgSQL函數中的temp
訪問結果值?
這個查詢有點模棱兩可,所以我的回復是通用的。 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.