EXECUTE 'INSERT INTO my_table VALUES ' || NEW;
EXECUTE 'INSERT INTO my_table VALUES ' || NEW.*;
EXECUTE 'INSERT INTO my_table SELECT * FROM ' || NEW;
EXECUTE 'INSERT INTO my_table VALUES ' || NEW;
EXECUTE 'INSERT INTO my_table VALUES ' || NEW.*;
EXECUTE 'INSERT INTO my_table SELECT * FROM ' || NEW;
EXECUTE 'INSERT INTO my_table SELECT ($1).*'
USING NEW;
由于您的表名似乎是稳定的,您甚至不需要使用动态SQL和EXECUTE。只需使用简单的INSERT语句即可:
INSERT INTO my_table SELECT (NEW).*
括号是为了使复合类型的语法明确而必需的。
问问自己在将来你的应用程序中可能会发生什么变化:
如果目标表应该与源表保持同步(或者目标和源表相同),那么最好不要显式列出列。
如果您只想选择特定的列,并且不希望随着源表或目标表的可能更新而更改,最好提供一个列列表。
EXECUTE 'INSERT INTO my_table (col1, col2, col3) VALUES (?, ?, ?)' USING NEW.col1, NEW.col2, NEW.col3;
请详细说明您的使用情况,以便更好地解决问题。