问题标签 [plpgsql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - Postgres触发器执行速度的差异?
我有一个在表插入或更新时执行函数的触发器。它看起来像这样:
当我插入一行时,它似乎运行得很慢。使用解释分析,我确定这个触发器需要将近 400 毫秒才能完成。
但是,如果我在函数中运行这两个大量的 SQL,它们每个只需要 3 或 4 毫秒即可运行!
第一部分:
第二部分:
这对我来说毫无意义。
有什么想法吗?
谢谢。
postgresql - 如何从函数返回更新的行
我对postgres很陌生。我想创建一个更新多行并选择受影响行的函数(如存储过程)。
这是我的声明:
只要只有 1 行受到影响,它就可以正常工作。但是当更多行受到影响时,它不会。
postgresql - 如何在 Pl/pgSQL 中使用声明的参数作为查询的组件?
我正在尝试在 pl/pgsql 中做一个通用函数。我面临一个我无法弄清楚的问题。请参阅在声明块中我为某些参数赋值。我想知道如何将它们用作查询的组件。(示例:BEGIN/END 块,groupby_join_field)
欢迎每一个想法,
编辑 :
在这种情况下 goupby_join_field 的值是 year_id,所以我希望引擎能够理解 dim_date.year_id
ruby-on-rails - 如何使用 PostgreSQL 触发器?
我正在尝试在我的 rails 应用程序中使用 PostgreSQL 触发器。所以我尝试使用这种迁移,其中触发器的执行应该很容易:
但这并没有改变什么。如果我要在这里使用一个,我不知道在哪里编写过程或函数......
postgresql - pl/pgsql 数组作为聚合函数的输入
我正在编写执行一些统计处理的 pl/pgsql 函数。使用 8.2 的 postgres。我想使用这个方便的聚合函数:
regr_slope(Y, X)
但是,我将我的 X 和 Y 数据存储为 pl/pgsql 函数中的本地数组: y double precision[]; x 双精度[];
问题是当我在 pl/pgsql 函数中使用它作为一行时:
坡度:= regr_slope(y,x);
我收到一条错误消息,指出该函数不可用或参数错误。我怀疑这是因为输入应该从表中选择为列,而不是作为双精度数组传递。
有没有办法用本地数组制作 regr_slope 函数?(即,某种方式将数组转换为聚合函数的有效输入?)
谢谢你。
plpgsql - PSQL : 更新一个也使用了触发器的表
解决这个问题的最佳方法是什么。
所以我在桌子上使用触发器。与触发器相关的函数更新使用触发器的同一个表。
这是一个问题,因为它不能两者兼得。
postgresql - PostgreSQL:比较 IPv4 地址的前 3 个数字?
我正在尝试编写一个 PHP 脚本,用户可以在其中评价其他用户的“优点”:
为了(尝试)防止篡改,我想在过去一小时内删除来自同一 IP 的相同 ID 的条目
(由于代理/路由器偶尔的误报是可以的 - 因为失去评级是可以的,因为作者可以在以后的任何时间重新提交它;但是让一些白痴在不同的 id 下注册并破坏我的整个数据库是不行的当我离开网站时):
请问我有2个问题:
1)如果我只想比较IP地址的前3个数字而不是4个,我该怎么做? (是的,我知道 IPv4 网络的 A、B、C 类型,在这里没关系......)
2)我需要为我的表添加索引还是已经为 id 和 author 编制了索引?
谢谢!亚历克斯
database - 从 PostgreSQL 函数生成 HTML
谁能帮我这个?我的任务是编写一个函数,该函数将从 PostgreSQL(plpgsql 语言)中的给定表名生成 HTML 表。我已经写了这个,但这远不是我需要的。它会为我要给出的列生成一个表(目前只有一个),但我只需要给表一个名称。
创建或替换函数 genhtml2(tablename text, columnname text)
RETURNS text AS $BODY$ DECLARE result text := ''; searchsql 文本 := ''; var_match text := ''; 开始搜索sql := 'SELECT' || 列名 || '来自' || 表名 || '';返回结果;结尾; $BODY$ 语言 'plpgsql' 不可变;
postgresql - plpgsql 函数返回表(..)
我试图让这个 plpgsql 函数工作:
它一直在第 2 行 - 表上给我一个错误..
错误:“TABLE”第 2 行或附近的语法错误:RETURNS TABLE(designacion varchar(255),timebeingrotten varch... ^
***错误** *
错误:“TABLE”SQL 状态或附近的语法错误:42601 字符:67
postgresql - 删除触发器中的行 (PostgreSQL)
我有一个更新触发器,应该删除行OLD*,但我不知道表结构。所以我尝试使用 information_schema 来获取列名,但它真的很慢。
是否可以在不了解表结构的情况下执行删除?
UPD: 触发器应该接受任何表的行,因此触发器函数在调用之前无法知道该表的任何信息。
UPD2:
这对我很有效: