簡體   English   中英

在PL / pgSQL中檢索返回的INSERT行

[英]Retrieve returning row of INSERT in PL/pgSQL

我有一個名為表test與列iddata PostgreSQL數據庫中。

我創建了一個名為insert_test的觸發器AFTER INSERT ,它啟動了一個同名的函數。

PHP中的插入SQL是這樣的:

insert into test (data) values ('try') returning 'variables' as temp;

如何在PL / pgSQL函數中的temp訪問結果值?

這個查詢有點模棱兩可,所以我的回復是通用的。 RETURNING子句的結果是動態計算的,並立即發送給客戶端。 因此,您無法從PL / pgSQL觸摸這些值。 但是表中的所有值都可以通過記錄變量NEWOLD在觸發器函數中使用 - 因此您可以重新計算任何表達式。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM