LoginSignup
1
1

More than 5 years have passed since last update.

PostgreSQLで別のテーブルに列を移動する

Last updated at Posted at 2015-05-11

目的: 既にデータの入った列を別のテーブルに移動させる

プログラムの変更に伴って、ある列を別のテーブルに移動させたくなった。
検索するとデータベースまるごとの移行とかの
情報が多くて調べにくかったので、簡単だけどメモ。

前提条件

  • WalletテーブルからBankテーブルにmonney列を移動する
  • ただし、2つのテーブルで同じidをもったものだけを移動すれば良い
    (親テーブル<-->従属テーブルのような移動を想定している)

初期状態

-- 初期テーブル定義
CREATE TABLE Wallet (
  id INTEGER NOT NULL,
  monney INTEGER NOT NULL,
  CONSTRAINT wallet_pkey PRIMARY KEY (id)
);
CREATE TABLE Bank (
  id INTEGER NOT NULL,
  CONSTRAINT bank_pkey PRIMARY KEY (id)
);

-- 適当にデータが入っているものとする
INSERT INTO Wallet 
  (id, monney)
  VALUES
  (1, 100),
  (2, 500),
  (3, -1000),
  (4, 10000),
  (5, 0);
INSERT INTO Bank
  (id)
  VALUES
  (1), (3), (4), (5);

移動の実行

-- Monney列をBankテーブルに作成
ALTER TABLE Bank
  ADD COLUMN monney integer;

-- WalletテーブルからBankテーブルにmonneyの内容をコピー
UPDATE Bank
  SET monney = 
    (SELECT monney 
     FROM Wallet
     WHERE Wallet.id = Bank.id
    );

-- 動作を確認したら、必要に応じて元のテーブルからmonney列削除
ALTER TABLE Wallet
  drop monney;

以上。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1