本文へスキップ
`Ctrl`+`K`

# 7.3.66. `table_rename`

## 7.3.66.1. 概要

`table_rename` コマンドはテーブル名を変更します。

これは軽い操作です。名前とテーブルオブジェクト間の関係を変更するだけです。テーブルの値とテーブルのカラムの値をコピーしません。

これは危険な操作です。 `table_rename` を実行している間、読み取り操作を含むすべての操作を停止しなければいけません。以下のケースが起こった場合、Groongaプロセスはクラッシュするかもしれません。

> - 現在のテーブル名で名前を変更しようとしているテーブルにアクセスする操作（たとえば `select` ）を開始します。以降、現在のテーブル名を `古いテーブル名` と呼ぶことにします。これは、今、このテーブル名を変更しようとしているからです。

> - `table_rename` を実行します。 `select` は実行中です。

> - `select` は古いテーブル名で、名前が変更されたテーブルにアクセスします。しかし、テーブルはすでに新しいテーブル名に変更されているため、 `select` は古いテーブル名でテーブルを見つけることができません。このときGroongaプロセスがクラッシュするかもしれません。

## 7.3.66.2. 構文

このコマンドには2つの引数があります。

すべての引数は必須です:

    table_rename name new_name

## 7.3.66.3. 使い方

以下は `table_rename` コマンドの簡単な使用例です。

実行例:

    table_create Users TABLE_PAT_KEY ShortText
    # [[0,1337566253.89858,0.000355720520019531],true]
    column_create Users score COLUMN_SCALAR Int32
    # [[0,1337566253.89858,0.000355720520019531],true]
    load --table Users
    [
    {"_key": "Alice",  "score": 2},
    {"_key": "Bob",    "score": 0},
    {"_key": "Carlos", "score": -1}
    ]
    # [[0,1337566253.89858,0.000355720520019531],3]
    table_rename Users Players
    # [[0,1337566253.89858,0.000355720520019531],true]
    table_list
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         "id",
    #         "UInt32"
    #       ],
    #       [
    #         "name",
    #         "ShortText"
    #       ],
    #       [
    #         "path",
    #         "ShortText"
    #       ],
    #       [
    #         "flags",
    #         "ShortText"
    #       ],
    #       [
    #         "domain",
    #         "ShortText"
    #       ],
    #       [
    #         "range",
    #         "ShortText"
    #       ],
    #       [
    #         "default_tokenizer",
    #         "ShortText"
    #       ],
    #       [
    #         "normalizer",
    #         "ShortText"
    #       ]
    #     ],
    #     [
    #       256,
    #       "Players",
    #       "${DB_PATH}.0000100",
    #       "TABLE_PAT_KEY|PERSISTENT",
    #       "ShortText",
    #       null,
    #       null,
    #       null
    #     ]
    #   ]
    # ]
    select Players
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "score",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Alice",
    #         2
    #       ],
    #       [
    #         2,
    #         "Bob",
    #         0
    #       ],
    #       [
    #         3,
    #         "Carlos",
    #         -1
    #       ]
    #     ]
    #   ]
    # ]

## 7.3.66.4. 引数

このセクションでは `table_rename` の引数について説明します。

### 7.3.66.4.1. 必須引数

すべての引数は必須です。

#### 7.3.66.4.1.1. `name`

名前を変更するテーブルの名前を指定します。

#### 7.3.66.4.1.2. `new_name`

新しいテーブル名を指定します。

## 7.3.66.5. 戻り値

このコマンドが成功したときは以下のようにボディは `true` になります:

    [HEADER, true]

このコマンドが失敗すると、 `HEADER` にエラーの詳細が含まれます。

`HEADER` については 出力形式 を参照してください。