Database 在postgres中交换生产模式

Database 在postgres中交换生产模式,database,postgresql,Database,Postgresql,我有一个名为current_schema的现有模式。我每隔几个小时就会收到新的第三方数据。我想每隔几个小时更换其中的数据,下面是我计划要做的 1-将新数据写入postgres临时模式 2-将当前模式重命名为当前模式\u del 3-将temp重命名为当前_模式 4-删除当前\u模式\u del 现在,当我执行步骤2和3时,如果有人试图访问/修改数据,会发生什么情况?这是正确的方法吗?您的程序应该可以正常工作 作为步骤2,您还可以立即删除旧模式 删除将需要对架构及其所有对象进行ACCESS EXC

我有一个名为current_schema的现有模式。我每隔几个小时就会收到新的第三方数据。我想每隔几个小时更换其中的数据,下面是我计划要做的

1-将新数据写入postgres临时模式
2-将当前模式重命名为当前模式\u del
3-将temp重命名为当前_模式
4-删除当前\u模式\u del


现在,当我执行步骤2和3时,如果有人试图访问/修改数据,会发生什么情况?这是正确的方法吗?

您的程序应该可以正常工作

作为步骤2,您还可以立即删除旧模式

删除将需要对架构及其所有对象进行
ACCESS EXCLUSIVE
锁定,因此必须等待所有访问这些对象的早期事务完成

一种选择是使用一个函数(带有
安全定义器
,由超级用户拥有),该函数可以终止访问此类对象的所有事务,这样您就不必等待长时间运行的事务结束