小编Iva*_*van的帖子

以列名为参数修改行的触发函数

我正在尝试在 Postgres 9.4 中编写一个触发器函数。像这样的东西(还没有工作):

  CREATE FUNCTION set_point_from_coords(source _regclass, target _regclass) 
    RETURNS trigger AS $func$
  BEGIN
    NEW.target := ST_SetSRID(ST_Point(NEW.source[1], NEW.source[2]), 4326);
    RETURN NEW;
  END;
  $func$ LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

在这种情况下,target是一个类型的列geometry并且source是一个小数数组。

当一行插入coords数组时,我想将其转换为point. 如果我只是对列名进行硬编码,则上述方法会起作用,但我想使用相同的函数为不同的表和不同的列对执行此操作。而且我对它INSERT本身没有直接控制权。
这是我的一些实验:http : //sqlfiddle.com/#!15/ddddcd/1

找到了这篇相关的博客文章,我很难解析它。

如果这样更容易编码,我可以在插入/更新之后而不是之前运行它。

postgresql trigger dynamic-sql plpgsql

9
推荐指数
1
解决办法
6239
查看次数

标签 统计

dynamic-sql ×1

plpgsql ×1

postgresql ×1

trigger ×1