首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PostgreSQL创建重新映射列的插入触发器

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

Stack Overflow用户
提问于 2012-06-13 23:42:44
回答 1查看 220关注 0票数 1

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
COPY "public"."stations" ("column1","column2","column3","column4", geom) FROM stdin;

column1和column2在文件中,但不在目标表中,因此复制失败。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
COPY "public"."stations" ("column3","column4", geom) FROM stdin;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 02:36:09

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

COPY FROM将调用目标表上的任何触发器和检查约束。但是,它不会调用规则。

您可以编辑该文件,也可以使用临时临时表

  1. COPY指向具有匹配列的临时表。
  2. 使用INSERT将所需的列写入最终目标表,或将整个范围的SQL命令写入更复杂的内容。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11024925

复制
相关文章
Postgresql源码(86)varchar的创建与插入分析
一般PG数据类型不会带括号,varchar和numeric是比较特殊的基本类型,后面可以带括号指定长度或精度。
mingjie
2022/10/28
5470
PostgreSQL 列转行问题
SELECT relative_label_content FROM frk_s.label_cor_gene
全栈程序员站长
2022/07/04
1.1K0
postgresql 触发器 简介(转)
– 把before for each row的触发器删掉, 再测试插入 : postgres=# drop trigger tg02 on t_ret; DROP TRIGGER postgres=# drop trigger tg2 on t_ret; DROP TRIGGER postgres=# insert into t_ret values(1,’digoal’,now()); NOTICE: 00000: tg01 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg1 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg03, after for each row 的触发器函数返回空, 不影响后续的触发器是否被调用. 因为只要表上面发生了真正的行操作, after for each row就会被触发, 除非when条件不满足. (这个后面会讲到) LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg3 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg04 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg4 LOCATION: exec_stmt_raise, pl_exec.c:2840 INSERT 0 1 – 有数据插入. 这也说明了before for each statement的返回值为空并不会影响数据库对行的操作. 只有before for each row的返回值会影响数据库对行的操作. postgres=# select * from t_ret ; id | info | crt_time —-+——–+—————————- 1 | digoal | 2013-03-10 16:50:39.551481 (1 row)
qubianzhong
2019/07/01
4K0
Postgresql 强制修改列的类型
当列的类型为字符类型,当我们想修改为数值类型时,是无法成功的,这个时候我们可以通过以下方法进行修改。
飞奔去旅行
2019/06/13
2.9K0
Excel快速插入空白列
如何快速插入空白列呢? 在开始菜单栏选择插入,插入工作表列(即可在左边创建一个新的空白列)
magize
2023/07/28
2690
Excel快速插入空白列
hashmap 的重新散列和装载因子
HashMap 的装载因子是 0.75,用人话说就是当 HashMap 的容量达到定义容量的 75% 的时候,HashMap 会进行扩容,当 HashMap 进行扩容的时候就会重新散列(rehashing)。
HoneyMoose
2022/11/30
5940
hashmap 的重新散列和装载因子
【说站】python哈希散列的映射
以上就是python哈希散列的映射,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
7470
【说站】python哈希散列的映射
hashmap 的重新散列和装载因子
HashMap 的装载因子是 0.75,用人话说就是当 HashMap 的容量达到定义容量的 75% 的时候,HashMap 会进行扩容,当 HashMap 进行扩容的时候就会重新散列(rehashing)。
HoneyMoose
2022/12/03
4650
hashmap 的重新散列和装载因子
Postgresql插入或更新操作upsert
幂等性的一个要求是多次操作的结果一致。对于update操作,多次直接的结果都是最后update的值,是满足需求的。但对于insert,如果已经插入,第二次会报错,duplicate error, 主键重复或者unique key duplicate。所以需要做一下处理。
Ryan-Miao
2019/01/24
2K0
重新认识 Java 中的内存映射(mmap)
mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页到对应的文件磁盘上,即完成了对文件的操作而不必再调用 read,write 等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。
kirito-moe
2021/11/17
4.7K0
重新认识 Java 中的内存映射(mmap)
Postgresql在哪里使用列统计信息?
对pg_statistic表的查询都是走syscache的,要找到所有使用列统计信息地方,遍历系统表索引即可
mingjie
2023/10/13
1580
Postgresql在哪里使用列统计信息?
我的 Serverless 实战 — 云函数与触发器的创建与使用 ( 开通腾讯云 “ 云开发 “ 服务 | 创建云函数 | 创建触发器 | 测试触发器 )
阿里云 , 腾讯云 , 都提供了相关 Serverless 服务 , 这里以腾讯云为例进行展示 ;
韩曙亮
2023/03/29
1.7K0
我的 Serverless 实战 — 云函数与触发器的创建与使用 ( 开通腾讯云 “ 云开发 “ 服务 | 创建云函数 | 创建触发器 | 测试触发器 )
PostgreSQL表用户列最大个数
有些业务可能有这么个需求:需要增加用户列,即通过ALTER TABLE ... ADD...来添加用户列。那么PG/GP中是否会有列个数的限制呢?
yzsDBA
2023/09/08
3250
PostgreSQL表用户列最大个数
触发器与视图的创建与使用
今日小知识点:DML触发器按出发时刻分两类:after触发器(在表中数据修改之后出发,是默认类型)、instead of 触发器(在表中数据修改以前触发)
ellipse
2019/08/16
1.4K0
触发器与视图的创建与使用
触发器创建删除等操作
触发器是一种特殊的存储过程,类似于事件函数,SQL Server™ 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列 T-SQL语句。
全栈程序员站长
2022/07/15
1.7K0
PostgreSQL创建表分析
脚本准备 创建表的脚本 CREATE DATABASE sampledb OWNER perrynzhou; GRANT ALL PRIVILEGES ON DATABASE sampledb TO perrynzhou; 数据登录脚本 psql -h 127.0.0.1 -d sampledb sampledb=# CREATE TABLE stu_xx_01(NAME TEXT NOT NULL,AGE INT NOT NULL); 表创建分析 表创建过程概述 服务进程接受SQ
用户4700054
2022/08/17
1.7K0
PostgreSQL 创建表格的方法
CREATE TABLE 在当前数据库创建一个新的空白表,该表将由发出此命令的用户所拥有。
用户4988085
2021/09/17
2K0
PostgreSQL 教程
本 PostgreSQL 教程可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。
postgres
2023/10/22
6390
PostgreSQL 教程
数据库 PostgreSQL 常用命令
在我们开始学习 PostgreSQL 数据库前,让我们先了解下 ORDBMS 的一些术语:
为为为什么
2023/02/21
2.3K0
数据库 PostgreSQL 常用命令
数据库 PostgreSQL 常用命令
在我们开始学习 PostgreSQL 数据库前,让我们先了解下 ORDBMS 的一些术语:
为为为什么
2023/01/16
2.2K0

相似问题

如何在PostgreSQL中编写重新插入触发器?

22

为postgresql中的每个新插入创建触发器

13

Postgresql插入触发器连接

25

Postgresql插入规则/触发器

22

用于插入的postgresql触发器

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文