适用于: Databricks SQL
 Databricks SQL  Databricks Runtime 10.4 LTS 及更高版本
 Databricks Runtime 10.4 LTS 及更高版本  仅 Unity Catalog
 仅 Unity Catalog
向/从共享添加、修改或删除架构、表、具体化视图或视图。 重命名共享。 将共享的所有权转移到新的主体。
所需的权限:
- 若要更新共享所有者,你必须是元存储管理员。
- 若要更新共享名称,你必须是具有 CREATE SHARE特权 和 共享所有者的用户。
- 若要添加表或视图,您必须是共享对象的所有者、对包含表或视图的架构具有 USE SCHEMA,并且对表或视图具有SELECT权限。 必须拥有SELECT权限才能共享表或视图。
- 若要更新任何其他共享属性,你必须是所有者。
语法
ALTER SHARE share_name
  { alter_add_materialized_view |
    REMOVE MATERIALIZED VIEW mat_view_name |
    alter_add_table |
    REMOVE TABLE table_name |
    alter_add_schema |
    REMOVE SCHEMA schema_name |
    alter_add_view |
    REMOVE VIEW view_name |
    alter_add_model |
    REMOVE MODEL model_name |
    RENAME TO to_share_name |
    [ SET ] OWNER TO principal }
alter_add_materialized_view
  { { ALTER | ADD } MATERIALIZED VIEW mat_view_name [ COMMENT comment ] [ AS mat_view_share_name ]
alter_add_table
  { { ALTER | ADD } [ TABLE ] table_name [ COMMENT comment ]
        [ PARTITION clause ] [ AS table_share_name ]
        [ WITH HISTORY | WITHOUT HISTORY ] }
alter_add_schema
  { { ALTER | ADD } SCHEMA schema_name [ COMMENT comment ]
alter_add_view
  { { ALTER | ADD } VIEW view_name [ COMMENT comment ] [ AS view_share_name ]
alter_add_model
  { { ALTER | ADD } VIEW model_name [ COMMENT comment ] [ AS model_share_name ]
注意
              WITH HISTORY | WITHOUT HISTORY Databricks Runtime 12.2 LTS 及更高版本支持  。 Databricks Runtime 版本 11.1 至 12.0 要求指定
。 Databricks Runtime 版本 11.1 至 12.0 要求指定 WITH CHANGE DATA FEED [ START VERSION version ] 而不是 WITH HISTORY。 在 Databricks SQL 和 Databricks Runtime 16.2 及更高版本上, WITH HISTORY 是默认值。
              WITH CHANGE DATA FEED 已弃用。
另请注意,如果除了执行按时间顺序查询和流式读取之外,你还希望客户能够使用 table_changes() 函数查询表的更改数据馈送 (CDF),则必须在共享表其  (或 WITH HISTORY)之前WITH CHANGE DATA FEED。
参数
- 
要更改的共享的名称。 
- alter_add_materialized_view- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 13.3 LTS 及更高版本 Databricks Runtime 13.3 LTS 及更高版本- 将具体化视图添加到共享或修改现有共享具体化视图。 要运行此语句,你必须是共享的所有者且拥有该具体化视图的 - SELECT特权。- ADD MATERIALIZED VIEWmat_view_name- 标识要添加的具体化视图。 如果找不到具体化视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。 
- ALTER MATERIALIZED VIEWmat_view_name- 标识要更改的具体化视图。 如果具体化视图还不是共享的一部分,则 Azure Databricks 会引发错误。 
- COMMENT comment- 附加到具体化视图共享的可选 - STRING文本,作为注释。
- 
(可选)以其他名称公开具体化视图。 可以使用架构名称限定该名称。 如果没有指定 mat_view_share_name,则具体化视图会以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。 
- REMOVE MATERIALIZED VIEWmat_view_name- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 13.3 LTS 及更高版本 Databricks Runtime 13.3 LTS 及更高版本- 从共享中删除由 - mat_view_name标识的具体化视图。 要运行此语句,你必须是共享的所有者。
- alter_add_table- 将整张表或其中的一部分添加到共享,或修改现有的共享表。 要运行此语句,你必须是共享的所有者且拥有该表的 - SELECT权限。- ADD [ TABLE ]table_name- 标识要添加的表。 表不得位于 Unity Catalog 中。 如果找不到表,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。 
- ALTER [ TABLE ]table_name- 标识要修改的表。 如果表还不是共享的一部分,则 Azure Databricks 会出现错误。 
- COMMENT comment- 附加到表的可选 - STRING文本作为注释共享。
- 
要添加的表的一个或多个分区。 分区键必须与表的分区匹配,并且必须与值关联。 如果不存在 PARTITION clause,则ADD TABLE会添加整个表。若要按对接收者属性的引用进行分区,请使用以下语法: PARTITION (column_name = CURRENT_RECIPIENT().<property-key>)按对收件人属性的引用进行分区 适用于:  Databricks SQL Databricks SQL Databricks Runtime 12.2 LTS 及更高版本。 Databricks Runtime 12.2 LTS 及更高版本。
- 
(可选)以其他名称公开表。 可以使用数据库(架构)名称限定该名称。 如果没有指定 table_share_name,则该表将以其自己的名称显示。
- WITH HISTORY或- WITHOUT HISTORY- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 12.2 LTS 及更高版本. Databricks Runtime 12.2 LTS 及更高版本.- 当指定 - WITH HISTORY时,共享具有完整历史记录的表,允许接收者执行按时间顺序查看查询。 然后可以使用 VERSION AS OF 和 TIMESTAMP AS OF 引用共享表。- 如果除了执行时间旅行查询和流式读取之外,你还希望客户能够使用 table_changes() 函数查询表的更改数据源 (CDF),则必须在共享表的 之前 - WITH HISTORY。- Databricks SQL 和 Databricks Runtime 16.2 及更高版本的默认行为是 - WITH HISTORY。 在 Databricks Runtime 16.1 及更低版本上,它是- WITHOUT HISTORY。
 
- REMOVE TABLEtable_name- 从共享中删除由 - table_name标识的表。 要运行此语句,你必须是共享的所有者。
- alter_add_schema- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 13.3 LTS 及更高版本 Databricks Runtime 13.3 LTS 及更高版本- 将架构添加到共享或修改现有共享架构。 要运行此语句,你必须是共享和架构的所有者。 - ADD SCHEMAschema_name- 标识要添加的架构。 如果找不到架构,Azure Databricks 会引发 SCHEMA_NOT_FOUND 错误。 
- ALTER SCHEMAschema_name- 标识要更改的架构。 如果架构还不是共享的一部分,则 Azure Databricks 会出现错误。 
- COMMENT comment- 作为注释附加到架构共享的可选 - STRING文本。
 
- REMOVE SCHEMAschema_name- 从共享中删除由 - schema_name标识的架构。 要运行此语句,你必须是共享的所有者。
- alter_add_view- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 13.3 LTS 及更高版本 Databricks Runtime 13.3 LTS 及更高版本- 将视图添加到共享或修改现有共享视图。 要运行此语句,你必须是共享的所有者且拥有该视图的 - SELECT权限。- ADD VIEWview_name- 标识要添加的视图。 如果找不到视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。 
- ALTER VIEWview_name- 标识要更改的视图。 如果视图还不是共享的一部分,则 Azure Databricks 会出现错误。 
- COMMENT comment- 附加到视图的可选 - STRING文本作为注释共享。
- 
(可选)以其他名称公开视图。 可以使用架构名称限定该名称。 如果没有指定 view_share_name,则视图以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。 
 
- REMOVE VIEW视图名称- 从共享中删除由 - view_name标识的视图。 要运行此语句,你必须是共享的所有者。
- alter_add_model- 适用于:Databricks SQL 勾选“是” Databricks Runtime 14.0 及更高版本check marked yes - 将模型添加到共享或修改现有共享模型。 要运行此语句,你必须是共享的所有者且拥有该模型的 - EXECUTE权限。- ADD MODELmodel_name- 标识要添加的模型。 如果找不到模型,Azure Databricks 将引发 RESOURCE_DOES_NOT_EXIST 错误。 
- ALTER MODELmodel_name- 标识要更改的模型。 如果模型还不是共享的一部分,则 Azure Databricks 会引发错误。 
- COMMENT comment- 可选的 - STRING文本作为注释附加到模型共享。
- 
(可选)以其他名称公开模型。 可以使用架构名称限定该名称。 如果没有指定 model_share_name,则该模型会以自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。 
 
- REMOVE MODELmodel_name- 从共享中删除由 - model_name标识的模型。 要运行此语句,你必须是共享的所有者。
- RENAME TOto_share_name- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 11.3 LTS 及更高版本 Databricks Runtime 11.3 LTS 及更高版本- 重命名共享。 该名称在元存储中的所有共享中必须是唯一的。 要运行此语句,你必须是共享的所有者且拥有元存储的 - CREATE SHARE权限。
- [ SET ] OWNER TO校长- 将共享的所有权转移给 - principal。 要运行此语句,你必须是共享的所有者。- 适用于:  Databricks SQL Databricks SQL Databricks Runtime 11.3 LTS 及更高版本 Databricks Runtime 11.3 LTS 及更高版本- 允许使用 - SET作为可选关键字。
 
示例
-- Creates a share named `some_share`.
> CREATE SHARE some_share;
-- Add a table to the share.
> ALTER SHARE some_share
     ADD TABLE my_schema.my_tab
         COMMENT 'some comment'
         PARTITION(c1_int = 5, c2_date LIKE '2021%')
         AS shared_schema.shared_tab;
-- Add a schema to the share.
> ALTER SHARE some_share
     ADD SCHEMA some_schema
         COMMENT 'some comment';
-- Add a view to the share.
> ALTER SHARE some_share
     ADD VIEW my_schema.my_view
         COMMENT 'some comment'
         AS shared_schema.shared_view;
-- Add a materialized view to the share.
> ALTER SHARE some_share
     ADD MATERIALIZED VIEW my_schema.my_mat_view
         COMMENT 'some comment'
         AS shared_schema.shared_mat_view;
-- Share a table with history
> ALTER SHARE share ADD TABLE table1 WITH HISTORY;
> ALTER SHARE share ADD TABLE table2 WITHOUT HISTORY;
> SHOW ALL IN SHARE share;
  Name    type   ... history_sharing  ...
  ------  ------ ... ----------------
  Table1  TABLE  ... ENABLED          ...
  Table2  TABLE  ... DISABLED         ...
-- Remove the table again
> ALTER SHARE some_share
    REMOVE TABLE shared_schema.shared_tab;
-- Remove the schema again
> ALTER SHARE some_share
    REMOVE SCHEMA some_schema;
-- Remove a view again
> ALTER SHARE some_share
    REMOVE VIEW shared_schema.shared_view;
-- Rename a share
> ALTER SHARE some_share
    RENAME TO new_share;
-- Change ownership of the share
> ALTER SHARE some_share
    OWNER TO `alf@melmak.et`