sql - 触发器函数中的 Postgres dblink_exec

标签 sql postgresql exec dblink

运行触发器并尝试运行以下函数时出现错误

CREATE OR REPLACE FUNCTION insert_new_sessions()
    RETURNS trigger AS
$$
DECLARE
BEGIN
SELECT dblink_exec('dbname=billing  port=5432','INSERT INTO md.radacct_test(radacctid,acctsessionid,acctuniqueid,username) select New.radacctid,New.acctsessionid,New.acctuniqueid,New.username' );

    RETURN NULL;
    EXCEPTION    WHEN OTHERS THEN RAISE NOTICE 'insert_new_sessions SQL ERROR: %', SQLERRM;

    RETURN NULL;
END;
$$  LANGUAGE plpgsql;

错误:

ERROR insert_new_sessions SQL ERROR: missing FROM-clause entry for table "new"

最佳答案

因为字符串中有 NEW,所以 解释为 字符串?尝试将 NEW.xxx 值与字符串的其余部分连接起来。 例如。 插入 md.radacct_test(...) 选择 ' || NEW.radacctid ||', ' || NEW.acctsessionid || ', ' || NEW.acctuniqueid || ', ' || quote_nullable(NEW.username));

关于sql - 触发器函数中的 Postgres dblink_exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18827421/

相关文章:

postgresql - CloudWatch 中的多个日志流 - PostgreSQL RDS

MySql 将嵌套的 SELECT IN 查询转换为 JOIN

sql - 如何将 .sql 文件加载到 Scala?

sql - Postgres 9.5 关于冲突选择

PHP exec - 在进度期间逐行回显输出

c - 当有多个 fork 进程在运行时,我无法理解流程

msbuild - 在不使用Exec或ItemGroup的情况下在MSBuild中复制单个文件

sql - SQL中如何减去数值范围?

php - 处理 PHP PDO postgres 中的 bool 输入?

sql - 分区表中如何可以有多个唯一?