postgresql创建临时表是否会阻止数据插入?

postgresql创建临时表是否会阻止数据插入?,postgresql,postgresql-8.4,Postgresql,Postgresql 8.4,我在后端使用postgresql 8.4。在后端,我做了一个postgres函数来获取一些数据。该函数不会将任何数据写入数据库,因此只需从其他表读取数据。函数内部将创建一个临时表,然后返回一组记录 当我监视服务器时,我发现这个函数正在阻止其他连接进行数据插入 所以只是想知道创建临时表可能会阻止从其他连接插入数据 进一步问题。我有一个函数a,在这个函数里面有一个对B的函数调用,函数B将返回一组记录,记录有两列,分别是name,email。然后,我需要函数a中的一个变量来保存从函数B返回的数据。当从

我在后端使用postgresql 8.4。在后端,我做了一个postgres函数来获取一些数据。该函数不会将任何数据写入数据库,因此只需从其他表读取数据。函数内部将创建一个临时表,然后返回一组记录

当我监视服务器时,我发现这个函数正在阻止其他连接进行数据插入

所以只是想知道创建临时表可能会阻止从其他连接插入数据

进一步问题。我有一个函数a,在这个函数里面有一个对B的函数调用,函数B将返回一组记录,记录有两列,分别是name,email。然后,我需要函数a中的一个变量来保存从函数B返回的数据。当从函数B返回数据时,我将使用第一列来做一些事情,然后使用第二列来保存其他工作人员的数据。 所以现在我使用temp table保存函数B返回的一组记录。还有其他方法保存返回的记录吗

发现这不确定是否有用:

您应该避免创建此类函数,因为在多会话环境中,甚至只是使用来自同一用户会话的多行请求,服务器将尝试为每个用户会话+每个查询行创建临时表。 由于多个请求需要在临时表中创建相同的资源,所以服务器可以同时处理一个请求中的一行

了解更多关于

考虑使用视图而不是创建临时表


另外,您关于查询不写任何数据,只是读取数据的陈述是不正确的。查询在执行期间实际上执行DDL和DML操作

所以,这是否意味着在多会话环境中创建tmp表,并执行块数据插入?你认为这和临时表有关吗?请看--不能根据服务器的需要同时处理同一个表中的多个插入,因此请确保每个插入事务都是一致的,至少要检查主键和唯一索引(如果有)。非常感谢你。我将尝试查看。我不确定在多个会话或一个会话环境中,是否可以替换相同名称的视图?