PostgreSQL:创建新表时如何自动设置表所有者

PostgreSQL:创建新表时如何自动设置表所有者,postgresql,Postgresql,在PostgreSQL中,表所有者在创建新表时自动设置为创建表的用户。在这种情况下,其他用户无法删除表 所以我想自动将新创建表的表所有者更改为特定角色。通过使用这种方法,具有此角色的任何人都可以删除表所有者为同一角色的表 为了实现这个目标,我使用了与本博客中描述的相同的方法 我目前正在使用此功能。在架构analytics\u custom中创建新表并将表所有者更改为analytics\u custom\u readwrite时,应触发此功能。 但是看起来这些函数并没有像预期的那样工作。新创建表的

在PostgreSQL中,表所有者在创建新表时自动设置为创建表的用户。在这种情况下,其他用户无法删除表

所以我想自动将新创建表的表所有者更改为特定角色。通过使用这种方法,具有此角色的任何人都可以删除表所有者为同一角色的表

为了实现这个目标,我使用了与本博客中描述的相同的方法

我目前正在使用此功能。在架构
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
语句。