gpt4 book ai didi

postgresql:在动态命令中使用 NEW.* 执行

转载 作者:行者123 更新时间:2023-11-29 12:01:22 24 4
gpt4 key购买 nike

我尝试为 postgresql 8.3 创建一个 plpgsql 触发器,它在插入之前自动对表进行分区通过 id 列

如果目标表不存在,它将被创建,并且插入到那里

所以我用这样的新表名创建了插入语句

exec_insert := 'INSERT INTO '||TG_TABLE_SCHEMA||'.'||TG_RELNAME||'_'||destinationid||' VALUES('||NEW.*||')';
EXECUTE exec_insert;

导致错误:

ERROR:  NEW used in query that is not in a rule

我有两个问题:

  1. 是否可以在 EXECUTE 中使用 NEW 或语句中是否有错误?
  2. 如果这根本不可能,有人知道如何从 NEW 中获取值以便我可以在语句中使用它们吗?我唯一想到的是使用 information_schema 检索主表的列名,然后尝试动态访问 NEW 的值——我也不知道如何:(

谢谢

最佳答案

你可以使用

...
_sql varchar(100)= 'insert into some_table values ($1.*)';
...
execute _sql using new;
...

我发现这个隐藏在一些偏远地区 :D 。我正在使用 9.1

关于postgresql:在动态命令中使用 NEW.* 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com