在PostgreSQL触发器中遍历表

时间:2019-03-21 15:45:19

标签: postgresql

我正在尝试在一个表上构建触发器,具体取决于其他表。所以在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»

或附近的语法错误

我不明白为什么-有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用EXECUTE(动态SQL),您只能执行SQL语句。您正在尝试执行PL / pgSQL块。

您有三个选择:

  • 查询字符串仅包含INSERT语句,并且循环为常规SQL。

  • 查询字符串是包含整个块的DO SQL语句。

  • 而不是编写FOR循环,而是编写动态语句,如

    INSERT INTO ...
    SELECT ... FROM %I