

# `ALTER FUNCTION`
<a name="alter-function-syntax-support"></a>

`ALTER FUNCTION` は、関数の定義を変更します。

## サポートされている構文
<a name="alter-function-supported-syntax"></a>

```
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema
```

## 説明
<a name="alter-function-description"></a>

`ALTER FUNCTION` は、既存の関数の定義を変更します。

 `ALTER FUNCTION` を使用するには、関数を所有している必要があります。関数のスキーマを変更するには、新しいスキーマに対する `CREATE` 権限も必要です。所有者を変更するには、新しい所有ロールのメンバーである必要があり、そのロールが関数のスキーマに対する `CREATE` 権限を持っている必要があります。

**`RENAME TO`**  
関数の名前を変更します。

**`OWNER TO`**  
関数の所有者を、指定されたユーザーに変更します。

**`SET SCHEMA`**  
関数を別のスキーマに移動します。

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

**{{name}}**  
変更する既存の関数の名前 (スキーマ修飾名も可)。

**{{argmode}}**  
引数のモード: `IN`、`OUT`、`INOUT`、または `VARIADIC`。これを省略した場合、デフォルトで `IN` になります。関数は識別に入力引数のみを使用するため、`IN` 引数、`INOUT` 引数、`VARIADIC` 引数のみを一覧表示します。

**{{argname}}**  
引数の名前。

**{{argtype}}**  
関数の引数のデータ型。

**{{new\_name}}**  
関数の新しい名前。

**{{new\_owner}}**  
関数の新しい所有者。

**{{new\_schema}}**  
関数の新しいスキーマ。

## 考慮事項
<a name="alter-function-considerations"></a>

上記以外の属性を変更するには、`CREATE OR REPLACE FUNCTION` を使用します。詳細については、「[`CREATE FUNCTION`](create-function-syntax-support.md)」を参照してください。

関数に対するコメントを追加、変更、または削除するには、別の `COMMENT ON FUNCTION` コマンドを使用します。

## 例
<a name="alter-function-examples"></a>

関数 `add` (2 つの `integer` 引数を取る) の名前を `sum_two` に変更します。

```
ALTER FUNCTION add(integer, integer) RENAME TO sum_two;
```

関数 `add` の所有者を現在のユーザーに変更します。

```
ALTER FUNCTION add(integer, integer) OWNER TO CURRENT_USER;
```

関数 `add` をスキーマ `utils` に移動します。

```
ALTER FUNCTION add(integer, integer) SET SCHEMA utils;
```

## 互換性
<a name="alter-function-compatibility"></a>

Aurora DSQL は、PostgreSQL の `ALTER FUNCTION` ステートメントの `RENAME TO` フォーム、`OWNER TO` フォーム、`SET SCHEMA` フォームをサポートしています。PostgreSQL で利用可能な他のフォームはサポートされていません。