2020年12月7日月曜日

SQLite3 カラムの名前を変更する (RENAME COLUMN)

概要

SQLite 3 でカラムの名前を変更するSQL。
他のDBMS同様に「alter table~」を利用する。


alter table table_name rename old_name to new_name;
                

もしくは


alter table table_name rename column old_name to new_name; 
                

OracleやMySQLだと「alter table~modify~」でも変更できるが、SQLite 3 ではこれができない。 さらに言うと、「alter table~」でカラムのデータ型を変更することもできない。 (ver. 3.33.0 時点)

Sqlite 3 カラムの型を変更する

環境
  • Windows 10 64bit
  • SQLite3 (3.33.0) Command-Line Shell

実行例

カラム名「id」を「product_id」に変更する


sqlite> .schema product
CREATE TABLE product
(
        id         integer
        , name     text
        , quantity integer
        , remark   text
);

sqlite> alter table product rename column id to product_id;

sqlite> .schema product
CREATE TABLE product
(
        product_id integer
        , name     text
        , quantity integer
        , remark   text
);
                

対象カラムを参照しているスキーマも変更される

ビュー、トリガー、外部キー制約に記載されているカラム名が変更される。

  1. 「total_view」ビューが「product」テーブルの「quantity」を参照している
  2. 「product」テーブルの「quantity」を「price」に変更すると 「total_view」も「price」を参照するよう変更される

sqlite> .tables
product     total_view

sqlite> -- # 1.
sqlite> .schema total_view
CREATE VIEW total_view
as
select
    sum(quantity)
from
    "product"
/* total_view("sum(quantity)") */;

sqlite> -- # 2.
sqlite> alter table product rename quantity to price;
sqlite> .schema total_view
CREATE VIEW total_view
as
select
    sum(price)
from
    "product"
/* total_view("sum(price)") */;
                

参考URL