尝试更新表中的特定列值时出错
错误:from中的函数“my\u function”具有不受支持的返回类型触发器
我试图手动运行更新脚本,但由于数据库正在生产中使用,因此编写after触发器时出错。基本上,我想做的是从另一个表中更新一个表的列值,并将该表命名为“table\u name\u temp”。脚本对我来说看起来很好,但是我不确定它到底有什么问题,因为错误响应似乎非常不透明。
Create or REPLACE FUNCTION my_function() RETURNS TRIGGER AS $$
BEGIN
update schema_name.table_name set category = schema_name.table_name_temp.category
FROM schema_name.table_name_temp
WHERE (some where clauses for first check)
and schema_name.table_name.name = schema_name.table_name_temp.name
returning null;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS trigger_name on schema_name.table_name;
CREATE TRIGGER trigger_name AFTER UPDATE ON schema_name.table_name
FOR EACH ROW EXECUTE PROCEDURE my_function();
select * from my_function();
1条答案
按热度按时间arknldoa1#
不能直接调用触发器函数,它必须由触发器调用。
通常,触发器函数包含新记录和旧记录。这些变量由触发器设置,并在触发器函数中随时可用。如果直接调用触发器函数,则不会设置这些值。
要使用触发器和查询中的同一段代码,它必须位于单独的函数中: