

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# ALTER DATASHARE
<a name="r_ALTER_DATASHARE"></a>

データ共有の定義を変更します。ALTER DATASHARE を使用して、オブジェクトを追加または削除できます。現在のデータベース内のデータ共有のみを変更できます。関連付けられたデータベースからデータ共有にオブジェクトを追加または削除します。追加または削除するデータ共有オブジェクトに対して必要な許可を持つデータ共有の所有者は、データ共有を変更できます。

## 必要な権限
<a name="r_ALTER_DATASHARE-privileges"></a>

以下に、ALTER DATASHARE に必要な権限を示します。
+ スーパーユーザー。
+ ALTER DATASHARE の権限を持つユーザー。
+ データ共有に対する ALTER または ALL の権限を持つユーザー
+ 特定のオブジェクトをデータ共有に追加しようとするユーザーには、対象のオブジェクトに対する権限が必要です。この場合、ユーザーはオブジェクトの所有者であるか、オブジェクトに対する SELECT、USAGE、あるいは ALL の権限を持っている必要があります。

## 構文
<a name="r_ALTER_DATASHARE-synopsis"></a>

次の構文は、データ共有に対して、オブジェクトを追加または削除する方法を示しています。

```
ALTER DATASHARE datashare_name { ADD | REMOVE } {
TABLE schema.table [, ...]
| SCHEMA schema [, ...]
| FUNCTION schema.sql_udf (argtype,...) [, ...]
| ALL TABLES IN SCHEMA schema [, ...]
| ALL FUNCTIONS IN SCHEMA schema [, ...] }
```

次の構文は、データ共有のプロパティを設定する方法を示しています。

```
ALTER DATASHARE datashare_name {
[ SET PUBLICACCESSIBLE [=] TRUE | FALSE ]
[ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ] }
```

## パラメータ
<a name="r_ALTER_DATASHARE-parameters"></a>

*datashare\_name*  
変更するデータ共有の名前。

ADD \| REMOVE  
データ共有にオブジェクトを追加するか、データ共有からオブジェクトを削除するかを指定する句。

TABLE *schema*.*table* [, ...]  
データ共有に追加する、指定されたスキーマ内のテーブルまたはビューの名前。

SCHEMA *schema* [, ...]   
データ共有に追加するスキーマの名前。

FUNCTION *schema*.*sql\_udf* (argtype,...) [, ...]  
データ共有に追加する引数タイプを伴うユーザー定義の SQL 関数の名前。

ALL TABLES IN SCHEMA *schema* [, ...]   
指定されたスキーマ内のすべてのテーブルをデータ共有に追加するかどうかを指定する句。

ALL FUNCTIONS IN SCHEMA *schema* [, ...] }  
指定されたスキーマ内のすべての関数をデータ共有に追加することを指定する句。

[ SET PUBLICACCESSIBLE [=] TRUE \| FALSE ]  
公開でアクセス可能なクラスターとデータ共有を共有できるかどうかを指定する句。

[ SET INCLUDENEW [=] TRUE \| FALSE FOR SCHEMA *schema* ]  
指定したスキーマで作成される将来のテーブル、ビュー、または SQL ユーザー定義関数 (UDF) をデータ共有に追加するかどうかを指定する句。指定したスキーマにある現在のテーブル、ビュー、または SQL UDF は、データ共有に追加されません。データ共有とスキーマの各ペアについて、このプロパティを変更できるのはスーパーユーザーのみです。INCLUDENEW 句はデフォルトで false を返します。

## ALTER DATASHARE の使用に関する注意事項
<a name="r_ALTER_DATASHARE_usage"></a>
+ 次のユーザーは、データ共有を変更できます。
  + スーパーユーザー
  + データ共有の所有者
  + データ共有に対する ALTER または ALL 権限を持つユーザー
+ 特定のオブジェクトをデータ共有に追加しようとするユーザーには、そのオブジェクトに対する適切な権限が必要です。ユーザーはオブジェクトの所有者であるか、オブジェクトに対する SELECT、USAGE、ALL 権限を持っている必要があります。
+ スキーマ、テーブル、通常のビュー、遅延バインディングビュー、マテリアライズドビュー、および SQL ユーザー定義関数 (UDF) を共有できます。スキーマにオブジェクトを追加する前に、まず対象のスキーマをデータ共有に追加します。

  スキーマを追加する場合、Amazon Redshift はその下にすべてのオブジェクトを追加するわけではありません。それらを明示的に追加する必要があります。
+ AWS Data Exchange データ共有は、パブリックアクセス可能設定を有効にした状態で作成することをお勧めします。
+ 一般的に、パブリックアクセスを無効にするために ALTER DATASHARE ステートメントを使用して AWS Data Exchange データ共有を変更することはお勧めしません。そうすると、AWS アカウントのクラスターがパブリックアクセス可能である場合に、データ共有にアクセスできるアカウントがアクセスできなくなります。このタイプの変更を実行すると、AWS Data Exchangeのデータ製品での使用条件に違反する可能性があります。この推奨事項の例外については、以下を参照してください。

  次に、パブリックにアクセス可能な設定を無効にして AWS Data Exchange データ共有を作成した場合に発生する、エラーの例を示します。

  ```
  ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
  ERROR:  Alter of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value 'c670ba4db22f4b'
  ```

  パブリックにアクセス可能な設定を無効にできるよう AWS Data Exchange データ共有を変更するには、次の変数を設定した上で、ALTER DATASHARE ステートメントを再度実行します。

  ```
  SET datashare_break_glass_session_var to 'c670ba4db22f4b';
  ```

  ```
  ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
  ```

  この場合、Amazon Redshift は 1 回限り有効なランダム値を生成し、その値により、AWS Data Exchangeデータ共有の ALTER DATASHARE SET PUBLICACCESSIBLE FALSE を許可するようにセッション変数を設定します。

## 例
<a name="r_ALTER_DATASHARE_examples"></a>

次の例では、スキーマ `public` をデータ共有 `salesshare` に追加します。

```
ALTER DATASHARE salesshare ADD SCHEMA public;
```

次の例では、テーブル `public.tickit_sales_redshift` をデータ共有 `salesshare` に追加します。

```
ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
```

次の例では、すべてのテーブルをデータ共有 `salesshare` に追加します。

```
ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
```

次の例では、データ共有 `salesshare` からテーブル `public.tickit_sales_redshift` を削除します。

```
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
```