0

我有表“Table1”和接受“Table1”类型参数的 SQL 过程“testProc”。当这个过程被这样调用时:

select testProc(t.*) from Table1 t; 

PostgreSQL 在内部使用指针来传递该参数吗?还是每行都复制到内存中?

谢谢!

4

1 回答 1

1

这里有两种不同的情况,一种必须涉及副本,第二种必须涉及指针。

在您提到的情况下,已制作副本。你可以这样测试:

create function test_test(inout test test) returns test as 
$$
begin
   $1.test := $1.test + 1;
   return;
end;
$$ language plpgsql;

select (test_test(t)).test, (test_test(t)).test from test t;

其中 test.test 是一个整数。数字将是相同的。

第二个是在触发器中,修改 NEW 将传递给下一个触发器。这些必须通过引用传递。

于 2013-03-14T04:07:47.660 回答