pg_temp
是当前会话的临时架构的别名。
如果您SET search_path TO pg_temp
在运行测试之前执行了a操作,那么它应该都可以正常工作(只要没有任何内容明确引用架构)。
如果您根本不想更改脚本,则将search_path
测试登录的用户设置为:
> ALTER ROLE testuser SET search_path = pg_temp;
除非明确指定,否则用户创建的所有内容都将位于pg_temp中。
这是来自的示例psql
,显示了别名解析为的实际模式(针对此连接):
> SET search_path TO pg_temp;
SET
> create table test();
CREATE TABLE
> \dt test
List of relations
Schema | Name | Type | Owner
-----------+------+-------+----------
pg_temp_4 | test | table | postgres
(1 row)
而且,正如您期望的那样,每个并行连接的模式都不同,并且在关闭连接后消失了。
注意,这也适用于函数,尽管在调用它们时必须显式引用pg_temp模式。
pg_temp
,单一模式对吗?因此,当我运行并发单元测试时,它们不会破坏彼此的表/数据吗?