gpt4 book ai didi

postgresql - postgres - 创建带参数的触发函数

转载 作者:行者123 更新时间:2023-11-29 12:07:28 25 4
gpt4 key购买 nike

我想知道是否可以创建带参数的触发器函数,因为函数的逻辑是相同的,但可能只是插入不同的表和列名。

函数如下:

CREATE OR REPLACE FUNCTION 
createInstance(table_name TEXT, column_name TEXT)
RETURNS TRIGGER AS
$BODY$
BEGIN
INSERT INTO
table_name
(
column_name,
account_id
)
VALUES
(
new._id,
new.account_id
);

RETURN new;
END;
$BODY$
language plpgsql;

错误:

ERROR:  trigger functions cannot have declared arguments
HINT: The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead.
CONTEXT: compilation of PL/pgSQL function "createinstance" near line 1

示例触发器:

CREATE TRIGGER trig_instanced_item_copy
AFTER INSERT ON creator.items
FOR EACH ROW
EXECUTE PROCEDURE createInstance();

最佳答案

您没有为触发器函数定义参数,但您仍然可以在 CREATE TRIGGER 语句中为其指定参数。

这些参数必须是常量,并将通过 TG_ARGV 数组提供给触发器函数。

这样您就可以为每个表参数化触发器,例如通过传递触发器应该操作的表和列的名称。在这种情况下,您必须在触发器中使用 EXECUTE 来使用动态 SQL。

关于postgresql - postgres - 创建带参数的触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54568227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com