在postgresql触发器中循环表
我正试图根据其他表在表上构建触发器。所以在我有了这样的东西之后 在触发器中:在postgresql触发器中循环表,postgresql,Postgresql,我正试图根据其他表在表上构建触发器。所以在我有了这样的东西之后 在触发器中: 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) 但在触发触发器时,我会出现以下错误: S
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»上或附近的语法错误
我不明白为什么会有任何想法?使用EXECUTE
(动态SQL)只能执行SQL语句。您正在尝试执行PL/pgSQL块
您有三种选择:
- 查询字符串仅包含
语句,循环为常规SQLINSERT
- 查询字符串是包含整个块的
SQL语句DO
- 与其为循环编写
,不如编写动态语句,如
INSERT INTO ... SELECT ... FROM %I
executeformat('for…loop insert to…select from%I end loop',table_name)
更改为for。。。循环执行格式(“插入到…从%I中选择”,表名称)结束循环
。