gcb*_*son 1 postgresql function
有临时视图和临时表 - 有“临时功能”吗?我有一个函数,我想在事务期间使用,然后丢弃(类似于临时表的用例。)此外,我希望两个并发事务能够使用相同的名称创建相同的函数,而无需锁争用。
没有CREATE TEMP FUNCTION ...像现有的CREATE TEMP TABLE .... 但是有一个在临时模式中创建函数的技巧pg_temp,就像链接的答案提供的那样。该函数仅在同一个会话中可见,并且只能通过模式限定名称调用:
CREATE FUNCTION pg_temp.f_inc(int)
RETURNS int AS 'SELECT $1 + 1' LANGUAGE sql IMMUTABLE;
SELECT pg_temp.f_inc(42);
f_inc
-----
43Run Code Online (Sandbox Code Playgroud)
我可以将这个想法追溯到Tom Lane 在 pgsql-general 上的这篇文章。
没有技巧的最接近的事情是准备好的声明。行为很像在会话结束时终止的临时 SQL 函数。不一样的东西,不过,只能单独使用,不能在更大的查询的上下文。例子:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Run Code Online (Sandbox Code Playgroud)
称呼:
EXECUTE upd_tbl(123, 'foo_name');
Run Code Online (Sandbox Code Playgroud)
细节:
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |