Sql 更改架构名称是否会影响对红移模式的权限授予

Sql 更改架构名称是否会影响对红移模式的权限授予,sql,postgresql,amazon-web-services,amazon-redshift,database-schema,Sql,Postgresql,Amazon Web Services,Amazon Redshift,Database Schema,如果我更新了一个模式,该模式被设置为具有访问其他具有不同访问权限的模式的权限,那么更新名称是否会撤消这些授权,或者它们是否会保持不变? Redshift在他们的文档中列出以下内容作为语法,但不会写入赠款是否会受到影响: ALTER SCHEMA schema_name { RENAME TO new_name | OWNER TO new_owner | QUOTA { quota [MB | GB | TB] | UNLIMITED } } 我的假设是,现有的补助金不会发生变化,但我想在变化

如果我更新了一个模式,该模式被设置为具有访问其他具有不同访问权限的模式的权限,那么更新名称是否会撤消这些授权,或者它们是否会保持不变? Redshift在他们的文档中列出以下内容作为语法,但不会写入赠款是否会受到影响:

ALTER SCHEMA schema_name
{
RENAME TO new_name |
OWNER TO new_owner |
QUOTA { quota [MB | GB | TB] | UNLIMITED }
}

我的假设是,现有的补助金不会发生变化,但我想在变化生效之前确认一下。

你是对的。更改名称不会更改基础权限。您可以在一个新的/dev集群中自己测试这一点,方法是确保在更改表名之前和之后,特权返回相同的值。但是,更改所有者将影响所有者级别的权限

CREATE SCHEMA dev;

CREATE TABLE dev.test_table AS (SELECT 1 AS t);

GRANT USAGE ON SCHEMA dev TO “username_here”;

GRANT SELECT ON TABLE dev.test_table TO “username_here”;

SELECT u.usename,
   s.schemaname,
   s.tablename,
   has_table_privilege(u.usename, s.schemaname || ‘.’ || s.tablename, ‘select’) AS user_has_table_select,
   has_schema_privilege(u.usename,s.schemaname,‘create’) AS user_has_schema_create,
   has_schema_privilege(u.usename,s.schemaname,‘usage’) AS user_has_schema_usage
FROM pg_user u
     CROSS JOIN
     (SELECT schemaname, tablename FROM pg_tables) s
WHERE s.schemaname in (‘dev’, ‘uat’)

ALTER SCHEMA dev rename TO uat;

SELECT u.usename,
   s.schemaname,
   s.tablename,
   has_table_privilege(u.usename, s.schemaname || ‘.’ || s.tablename, ‘select’) AS user_has_table_select,
   has_schema_privilege(u.usename,s.schemaname,‘create’) AS user_has_schema_create,
   has_schema_privilege(u.usename,s.schemaname,‘usage’) AS user_has_schema_usage
FROM pg_user u
     CROSS JOIN
     (SELECT schemaname, tablename FROM pg_tables) s
WHERE s.schemaname in (‘dev’, ‘uat’)