PostgreSQL:创建新表时如何自动设置表所有者
在PostgreSQL中,表所有者在创建新表时自动设置为创建表的用户。在这种情况下,其他用户无法删除表 所以我想自动将新创建表的表所有者更改为特定角色。通过使用这种方法,具有此角色的任何人都可以删除表所有者为同一角色的表 为了实现这个目标,我使用了与本博客中描述的相同的方法 我目前正在使用此功能。在架构PostgreSQL:创建新表时如何自动设置表所有者,postgresql,Postgresql,在PostgreSQL中,表所有者在创建新表时自动设置为创建表的用户。在这种情况下,其他用户无法删除表 所以我想自动将新创建表的表所有者更改为特定角色。通过使用这种方法,具有此角色的任何人都可以删除表所有者为同一角色的表 为了实现这个目标,我使用了与本博客中描述的相同的方法 我目前正在使用此功能。在架构analytics\u custom中创建新表并将表所有者更改为analytics\u custom\u readwrite时,应触发此功能。 但是看起来这些函数并没有像预期的那样工作。新创建表的
analytics\u custom
中创建新表并将表所有者更改为analytics\u custom\u readwrite
时,应触发此功能。
但是看起来这些函数并没有像预期的那样工作。新创建表的表所有者是创建表的用户
我错过什么了吗?这个函数有问题吗
CREATE OR REPLACE FUNCTION analytics_custom.trg_create_set_owner()
RETURNS event_trigger
LANGUAGE plpgsql
AS $function$
DECLARE
obj record;
BEGIN
FOR obj IN
SELECT *
FROM pg_event_trigger_ddl_commands()
WHERE schema_name='analytics_custom' AND command_tag='CREATE TABLE'
LOOP
if obj.object_identity ~ 'analytics_custom.*'
THEN
EXECUTE format('ALTER TABLE %s OWNER TO analytics_custom_readwrite', obj.object_identity);
end if;
END LOOP;
END;
$function$
;
CREATE EVENT TRIGGER analytics_custom_trg_create_set_owner
ON ddl_command_end
WHEN tag IN ('CREATE TABLE')
EXECUTE PROCEDURE analytics_custom.trg_create_set_owner();
缺少
CREATE EVENT TRIGGER
语句。缺少CREATE EVENT TRIGGER
语句。