gpt4 book ai didi

PostgreSQL 创建一个重新映射列的插入触发器

转载 作者:行者123 更新时间:2023-11-29 13:06:10 24 4
gpt4 key购买 nike

我想知道是否可以在表上使用触发器来“忽略”来自 STDIN 的 COPY 语句中但不在目标表中的列。抱歉,如果问题的措辞/语法不正确,但这是对我想说的内容的解释。我是触发器的新手,所以任何建议都会有所帮助。

我正在使用 PostGIS Shapefile 导入器将 shapefile 复制到我的 PostgreSQL 数据库中的空间表。

这会创建一个 COPY 语句,其中包含 shapefile 中的所有字段,例如:

COPY "public"."stations" ("column1","column2","column3","column4", geom) FROM stdin;

列 1 和列 2 在文件中但不在目标表中,因此 COPY 失败。

有没有一种方法可以创建触发器来创建与以下内容具有相同结果的内容:

COPY "public"."stations" ("column3","column4", geom) FROM stdin;

最佳答案

不,您不能跳过输入文件中存在的列。这将出错,before 触发器甚至被调用。你也不能使用规则。 I quote the manual :

COPY FROM will invoke any triggers and check constraints on the destination table. However, it will not invoke rules.

您可以编辑文件或使用临时暂存表:

  1. COPY 到具有匹配列的临时表。

  2. 使用 INSERT 将所需的列写入最终目标表 - 或者使用整个 SQL DDL 命令范围来处理更复杂的问题。

关于PostgreSQL 创建一个重新映射列的插入触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com