我正在尝试在一个表上构建触发器,具体取决于其他表。所以在search之后,我有这样的事情 在触发器中:
begin
table_name=select (...) from information schema ;
execute format('some stuff
for i in select ... loop
insert into table (...) select (...) from %I
end loop',table)
但是触发触发器时,出现此错误:
SQL错误[42601]:错误:«FOR»
或附近的语法错误
我不明白为什么-有什么想法吗?
答案 0 :(得分:0)
使用EXECUTE
(动态SQL),您只能执行SQL语句。您正在尝试执行PL / pgSQL块。
您有三个选择:
查询字符串仅包含INSERT
语句,并且循环为常规SQL。
查询字符串是包含整个块的DO
SQL语句。
而不是编写FOR
循环,而是编写动态语句,如
INSERT INTO ...
SELECT ... FROM %I