我有表“Table1”和接受“Table1”类型参数的 SQL 过程“testProc”。当这个过程被这样调用时:
select testProc(t.*) from Table1 t;
PostgreSQL 在内部使用指针来传递该参数吗?还是每行都复制到内存中?
谢谢!
我有表“Table1”和接受“Table1”类型参数的 SQL 过程“testProc”。当这个过程被这样调用时:
select testProc(t.*) from Table1 t;
PostgreSQL 在内部使用指针来传递该参数吗?还是每行都复制到内存中?
谢谢!
这里有两种不同的情况,一种必须涉及副本,第二种必须涉及指针。
在您提到的情况下,已制作副本。你可以这样测试:
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 将传递给下一个触发器。这些必须通过引用传递。