807083 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

まんじうこわい@楽

まんじうこわい@楽

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Keyword Search

▼キーワード検索

Calendar

Profile

hknopage

hknopage

Free Space

Category

Freepage List

2009.11.10
XML
カテゴリ:データベース
 既存のテーブルに大幅な変更が必要になり、ALTER TABLEで反映させることになった。
 変更をチマチマ1つずつ発行するのは面倒なので、一気にかませてみる事にした。

--変更内容--
・主キー(primary key)の変更
・主キーはオートインクリメント指定
・主キーカラムを一番上(最初)に追加
・他カラムを最後に追加
・インデックスの追加

 この項目を一度のSQLでやる事にした。
 結果から言ってしまえばこんな感じでOK。
--ALTER TABLE--
ALTER TABLE test_table
DROP PRIMARY KEY
,ADD COLUMN `new_primary_column` bigint NOT NULL auto_increment primary key FIRST
,ADD COLUMN `new_column_1` int NOT NULL default '0'
,ADD COLUMN `new_column_2` tinyint NOT NULL default '1'
,ADD INDEX `test_index_1` (`key_column_1`,`key_column_2`);
--/ALTER TABLE--

 簡単に解説すると
 1行目の
「ALTER TABLE test_table」
 で、変更対象のテーブルを指定

 2行目の
「DROP PRIMARY KEY」
 主キーを変更するという事は、既存主キーを削除して新たに追加する事と同等。
 既存主キーを消しておかないと、新しい主キーを追加するときに怒られる。
--主キーが複数になっちゃうよerror--
ERROR 1068 (42000): Multiple primary key defined
--/主キーが複数になっちゃうよerror--

 3行目の
「ADD COLUMN `new_primary_column` bigint NOT NULL auto_increment primary key FIRST」
 ADD COLUMN `new_primary_column`で追加するカラム指定
 その後は適当にオプション
 最後にFIRST句を指定して、一番最初にこのカラムを追加する事を宣言。

 4行目の
「ADD COLUMN `new_column_1` int NOT NULL default '0'」
 更にカラムを追加する。
 カラムの追加位置を指定していないので、一番最後にくっつく。
 5行目も同じ。

 6行目の
「ADD INDEX `test_index_1` (`key_column_1`,`key_column_2`)」
 ADD INDEX `test_index_1`で、追加するインデックス名指定。
 カッコにインデックス対象のカラムを指定。
 
 
 間違ってたらスマセン。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2010.03.15 11:32:00
コメント(0) | コメントを書く
[データベース] カテゴリの最新記事



© Rakuten Group, Inc.
X