|
カテゴリ:データベース
既存のテーブルに大幅な変更が必要になり、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) | コメントを書く
[データベース] カテゴリの最新記事
|