我可以使用哪个SQL语句重新执行触发器并更新表中的所有行?

Ale*_* S. 2 postgresql triggers

我有一个包含很多行的表,我在插入或更新事件中更改了与触发器关联的功能.此函数根据两个或多个单元格中的值进行计算以使用条件逻辑更新列,因此单个更新语句将无用.

那么,我可以使用哪个SQL语句重新执行触发器并更新所有行?

谢谢.

Fer*_*anB 8

您必须使用完全相同的值更新列.当然这取决于触发条件.例如:

UPDATE table
  SET columnX = columnX;
Run Code Online (Sandbox Code Playgroud)

无论如何,作为这种情况的最佳实践我通常拥有和相关的功能,我可以运行类似的东西(不确定是否适用于progresql):

BEGIN
  for c in (select column_id from table)
  loop
    function_on_trigger(c.column_id);
  end loop;
END;
/
Run Code Online (Sandbox Code Playgroud)


Ken*_*iah 5

根据 FerranB 的回答,在 Postgres 中运行该函数的正确方法如下:

SELECT function_on_trigger(column_id) FROM table;
Run Code Online (Sandbox Code Playgroud)