Database 执行字符串Postgres
我无法使此代码正常工作。这是作为插入、更新或删除触发器的结果执行的。将从多个表触发器调用相同的代码。因此,我不知道表名是什么或它们的列是什么。有什么想法吗Database 执行字符串Postgres,database,postgresql,triggers,plpgsql,postgresql-9.1,Database,Postgresql,Triggers,Plpgsql,Postgresql 9.1,我无法使此代码正常工作。这是作为插入、更新或删除触发器的结果执行的。将从多个表触发器调用相同的代码。因此,我不知道表名是什么或它们的列是什么。有什么想法吗 EXECUTE format('INSERT INTO %s VALUES %s', _tbl, (OLD).*); 错误是关于字符串没有用引号括起来: ERROR: column "bangor" does not exist LINE 1: INSERT INTO sample_test_table_deletes VALUES (3
EXECUTE format('INSERT INTO %s VALUES %s', _tbl, (OLD).*);
错误是关于字符串没有用引号括起来:
ERROR: column "bangor" does not exist
LINE 1: INSERT INTO sample_test_table_deletes VALUES (3,bangor,D,"20...
^
另一方面,以下工作:
INSERT INTO my_table VALUES((OLD).*);
也就是说,当查询不是通过执行块时
更新(触发代码):
特殊变量
OLD
在EXECUTE
中不可见。(也不是函数范围内的任何其他变量。)使用构造通过传入值:
EXECUTE format('INSERT INTO %I VALUES (($1).*)', _tbl)
USING OLD;
另外,使用%I
作为标识符,而不是%s
详情:
您的错误是什么?\u tbl
com来自哪里?触发器的完整代码是什么?嗨。谢谢我添加了错误。那么触发代码呢?请不要与我们玩20个问题…添加了您编写的触发器代码:这是由于删除触发器而执行的。
但是您有一个ELSE
小树枝用于插入
/更新
。。这是完全无效的。请澄清你想做什么。我怀疑每个可能的原始表都有一列mod_op
?我建议你开始一个新问题。把这个问题集中在所问的主题上,把剩下的问题放在一个新的问题上。但是你增加的触发函数还有几个严重的问题。嗨,欧文。你能提出改进建议吗?他们是否需要回答不同的问题?谢谢。@picmate:我回答了你的问题,然后看到了你后来添加的函数中的问题。这里的政策是每一个问题问一个问题,让事情清楚明了,对公众有用。嗨,埃尔文。我开始问一个新问题:。希望你能看看,并提出一些建议。
EXECUTE format('INSERT INTO %I VALUES (($1).*)', _tbl)
USING OLD;