我正在尝试为这样的触发器创建一个函数:
CREATE FUNCTION backup_largeobjects_grant()
RETURNS trigger AS $$
BEGIN
GRANT SELECT ON LARGE OBJECT NEW.loid TO backup;
END; $$
LANGUAGE plpgsql;
但是当它到达NEW时,这会给我一个错误。
错误:语法错误在或接近" NEW"
我一直在寻找但不明白我做错了。
有什么想法吗?
答案 0 :(得分:2)
看起来GRANT ... ON LARGE OBJECT
语句无法参数化;对象ID需要显示为文字整数值。
您可以通过将语句构建为字符串来实现存储过程:
EXECUTE 'GRANT SELECT ON LARGE OBJECT ' || NEW.loid::text || ' TO backup';