无法从临时表中删除?
Posted
技术标签:
【中文标题】无法从临时表中删除?【英文标题】:Unable to delete from a temp table? 【发布时间】:2018-03-13 13:24:52 【问题描述】:我一直遇到无法从临时表中删除数据的问题。但是,当我搜索错误消息时,我似乎无法在 Google 上找到相关匹配。我试图设置 REPLICA IDENTITY DEFAULT 和 NOTHING
CREATE TEMP TABLE name (LIKE schema.original);
错误:无法从表“名称”中删除,因为它没有 副本身份和发布删除提示:启用从 表,使用 ALTER TABLE 设置 REPLICA IDENTITY。
我正在尝试遵循 ETL 示例,因此我的查询看起来与此链接上的查询非常相似(表名和列不同):
https://github.com/gtoonstra/etl-with-airflow/blob/master/examples/etl-example/sql/process_customer_dimension.sql
我的搜索一直显示逻辑复制的命中,但是当我检查我的设置时,我发现它在复制之下。
name,setting
wal_level,replica
【问题讨论】:
【参考方案1】:您可以尝试将标识设置为完整,将使用整行作为标识符ALTER TABLE name REPLICA IDENTITY FULL;
或者如果它有唯一索引
ALTER TABLE name USING INDEX index_name;
默认情况下它会使用主键,我想应该没有。
顺便说一句,您为什么要发布临时表?
我认为您应该删除它,因为我认为复制 temp
表没有意义。找到您的酒吧名称 SELECT * FROM pg_publication;
并从中删除临时表:ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...]
【讨论】:
我开始回复你说我没有出版物,但是当我从 pg_publication 中选择 * 时,果然有一个。我目前没有设置复制,但我在 PG10 首次发布时进行了实验。我以为我停止了它。让我再试一次。 删除出版物解决了我的问题。我一定是无意中无缘无故地运行了几个月的出版物。我想知道它是否一直在影响性能。谢谢! 在发布中删除表时订阅会发生什么?以上是关于无法从临时表中删除?的主要内容,如果未能解决你的问题,请参考以下文章
无法从 plpgsql 函数中的动态命名临时表运行“选择进入”