Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何基于第二层、触发器、postgreSQL自动更新列

如何基于第二层、触发器、postgreSQL自动更新列
EN

Stack Overflow用户
提问于 2014-12-25 06:39:23
回答 1查看 791关注 0票数 1

我是postgreSQL的新手。我有两个表,观察和覆盖,我想创建一个触发器,允许更新列observation.land根据空间信息根据第二层(表) landcover.code_06。

我的意思是,如果我更新QGIS中的点层观测,我想在属性表中获得与列CODE_06中相同的列土地信息。

我创造了这个,但我不知道出了什么问题,或者为什么它不起作用。

代码语言:javascript
运行
AI代码解释
复制
ALTER TABLE observation ADD COLUMN land varchar (20)

CREATE OR REPLACE FUNCTION landinfo_land()
  RETURNS trigger AS
$BODY$
  BEGIN
    NEW.land := observation.land

                  FROM observation.land AS b, landcover.code_06 AS  w
          WHERE w.geom && NEW.geom AND
ST_Intersects(ST_PointOnSurface(NEW.geom), b.geom);
    RETURN NEW;
  END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION landinfo_land() OWNER TO postgres;


CREATE TRIGGER update_land_value
  BEFORE INSERT OR UPDATE
  ON observation
  FOR EACH ROW
  EXECUTE PROCEDURE landinfo_land();
EN

回答 1

Stack Overflow用户

发布于 2014-12-26 16:45:08

这是:

代码语言:javascript
运行
AI代码解释
复制
 NEW.land := observation.land

                  FROM observation.land AS b, landcover.code_06 AS  w
          WHERE w.geom && NEW.geom AND
ST_Intersects(ST_PointOnSurface(NEW.geom), b.geom);

一点道理都没有。

看起来您正在尝试使用子查询,而不是简单的表达式,但是没有SELECT关键字。即使在PL/PgSQL中,也不能这样做。如果它不仅仅是一个没有SQL查询关键字的简单表达式,那么它必须是一个有效的查询。

尝试:

代码语言:javascript
运行
AI代码解释
复制
 SELECT INTO STRICT NEW.land  observation.land
 FROM observation.land AS b, landcover.code_06 AS  w
 WHERE w.geom && NEW.geom AND
 ST_Intersects(ST_PointOnSurface(NEW.geom), b.geom);

是的,语法很难看。

如果继续出现问题,请检查PostgreSQL服务器错误日志。它们将包含错误消息,指示在执行PL/PgSQL函数时发生了什么错误,这将帮助您发现其他错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27648149

复制
相关文章
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
4.1K0
MySQL timestamp类型列值自动更新
MySQL中使用timestamp定义字段,默认情况下会给字段添加自动更新的属性,本文将分析这个自动更新的设置。 问题概述 一个表中定义了两个timestamp类型的字段, create_time TIMESTAMP NOT NULL COMMENT '创建时间', update_time TIMESTAMP NOT NULL COMMENT '更新时间' 新插入记录时,给create_time和update_time各自赋予当前时间值,没出现问题。更新记录时代码中只更新update_time,结果cre
JavaQ
2018/04/04
3.9K0
Postgresql 强制修改列的类型
当列的类型为字符类型,当我们想修改为数值类型时,是无法成功的,这个时候我们可以通过以下方法进行修改。
飞奔去旅行
2019/06/13
2.9K0
Postgresql在哪里使用列统计信息?
对pg_statistic表的查询都是走syscache的,要找到所有使用列统计信息地方,遍历系统表索引即可
mingjie
2023/10/13
1740
Postgresql在哪里使用列统计信息?
PostgreSQL表用户列最大个数
有些业务可能有这么个需求:需要增加用户列,即通过ALTER TABLE ... ADD...来添加用户列。那么PG/GP中是否会有列个数的限制呢?
yzsDBA
2023/09/08
3390
PostgreSQL表用户列最大个数
POSTGRESQL PG VS SQL SERVER 到底哪家强? (译) 应该是目前最全面的比较
为什么翻译这篇文章,因为本人对于这两种数据库是在熟悉不过了,一个是有10多年的经验,一个也有5-6年的经验,而且这两种数据库在很多部分很相似,所以翻译了此篇。另外前两天有一个同学告知,他们单位SQL SERVER 被替换成 MYSQL ,OMG 这篇文字更的写,明明有 SQL SERVER 表兄弟 POSTGRESQL ,非要找 SQL SERVER 他二舅大伯三姨的儿媳妇 MYSQL 做替换的数据库,做这样决定的人,应该被开除。
AustinDatabases
2023/09/06
3.2K0
POSTGRESQL  PG  VS SQL SERVER 到底哪家强?  (译) 应该是目前最全面的比较
PostgreSQL列存增加更新和删除功能
Hydra是企业级数据仓库的开源替代品。速度快且功能丰富,开发人员可以更快的构建更好的分析。支持列存PG的更新和删除是#1客户功能请求,现在GA了。之前博文“如何为分析构建最快的PG数据库”中,回顾了Hydra团队如何将列存、向量化和查询并行化添加到PG中,以及使用ClickBench的基准测试结果。目前对WHERE进行了向量化。但未用SIMD,声称很快会提供。平均下来,查询性能比基本PG提高了23倍!这也太夸张了吧,可以弄下来测试下,文末有源码地址。
yzsDBA
2023/05/25
1.2K0
PostgreSQL列存增加更新和删除功能
如何恢复Windows自动更新?
前段时间我通过联想出品的小工具,把Windows自动更新关了,但后面打不开了,非常尴尬,最后在Windows官方论坛找到一个好办法,顺利解决,分享一波~
zhaoolee
2021/03/04
6.6K1
如何恢复Windows自动更新?
进阶数据库系列(十):PostgreSQL 视图与触发器
视图(View)本质上是一个存储在数据库中的查询语句。视图本身不包含数据,也被称为虚拟表。 我们在创建视图时给它指定了一个名称,然后可以像表一样对其进行查询。
民工哥
2023/08/22
1.3K0
进阶数据库系列(十):PostgreSQL 视图与触发器
WordPress自动更新太坑了,如何关闭自动更新?
有些时候我们会收到关于WordPress自动更新成功了的邮件信息,提示你WordPress自动的给你升级了版本,这个有人喜有人忧的功能我觉得吧,确实得需要分开的来看待了,当然对于本分喜欢自动更新点的人来说,不必动手永远是最新版本的系统,确实省时省心的没有觉得有任何的鸡肋的地方吧。
wordpress建站吧
2019/08/15
7.8K0
PostgreSQL 教程
本 PostgreSQL 教程可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。
postgres
2023/10/22
9810
PostgreSQL 教程
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
postgresql镜像-postgresql下载地址-postgresql安装教程-阿里巴巴开源镜像站
宝耶需努力
2022/12/13
2.3K0
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
PostgreSQL 9.3发布
9月9日,PostgreSQL全球开发组宣布了9.3版发布的消息。从2010年9.0版开始,PostgreSQL已经连续四个版本稳定地按时在每年9月中旬发布,从一个侧面也显示了开发团队的强大实力。 9.3版的新增点通过官方的特性矩阵能够最直观地看到。官方Wiki中的What‘s New和正式文档中的版本说明有更详细的说明。 比较显著的新增特性包括:  外部数据集成 外部数据封装器现在可写了,大大有助于系统间的双向数据交换。这在目前多种数据库和存储技术共存的复杂IT系统中非常重要。 新增了一个高性能、读/写P
张善友
2018/01/29
1.4K0
如何关闭 Win 10 系统自动更新
很多小伙伴新买的电脑都有一个同样的诟病,那就是win10 的自动更新太烦人了,微软是每个月一小更, 每三个月一大更,每次小伙伴的电脑一旦联网,小伙伴的电脑就会开启后台不断的更新,然后我们每隔段时间就会发现C盘会越来越小,都是这些更新惹的祸。
Gorit
2021/12/09
1.3K0
如何关闭 Win 10 系统自动更新
如何禁用WordPress自动更新功能
WordPress 自动更新是一项 WordPress 自带的升级更新功能,可让我们的网站 WordPress 程序自动检查并安装更新到最新的版本。其主要也是出于安全考虑,WordPress 会自动更新核心 WordPress 程序。所以可能会更新插件或主题以解决潜在的安全风险。如果某个插件或主题部署在各个网站上,WordPress 核心团队可能会为它们发布自动更新。
张子凡
2023/01/09
1.3K0
如何禁用WordPress自动更新功能
VBA:基于指定列删除重复行
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要保留最后测试的数据。之前通过拷贝行的方式保留最后一行的数据(参见文末的延伸阅读1),但运行效率较低。目前通过借助数组和字典达到删除重复行的效果。
Exploring
2022/12/18
3.5K0
VBA:基于指定列删除重复行
Hive 如何修改分区列?
Hive 分区就是将数据按照数据表的某列或者某几列分为多个区域进行存储,这里的区域是指 hdfs 上的文件夹。按照某几列进行分区,就是说按照某列分区后的数据,继续按照不同的分区列进行分区。创建分区后,指定分区值即可直接查询该分区的数据,能够有效提高查询性能。
披头
2022/12/19
2.6K0
如何阻止 Windows 自动更新离线地图
Windows 中的内置地图应用程序由Microsoft Bing 地图提供支持,可用于快速查找前往某个地点的路线。您可以使用该应用程序轻松保存您最喜欢的地方,如家或工作场所,并创建您以后想记住的地方集合。但是,如果您觉得它的离线地图的自动更新功能不是很有用,您可以立即禁用它。就是这样!
帝旭科技
2022/11/23
1.2K0
如何阻止 Windows 自动更新离线地图
Pandas | 如何新增数据列?
在数据分析时,原始数据往往不能满足我们的需求,经常需要按照一定条件创建新的数据列或者修改原有数据列,然后进行后续分析。
生信real
2022/12/20
2.1K0

相似问题

触发器自动更新postgresql中的列

11

创建用于自动更新的PostgreSQL触发器。错误:列不是字符类型

21

PostgreSQL:基于列值转换列

12

如何在PostgreSQL中基于json列搜索列

28

Postgresql基于值更新特定字段(触发器)

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档