2011-01-28 9 views

答えて

-3

どのフィールドにも定義が変更されると、変更は「破壊的」になります。このような変更をデータ移行として扱うことが最善です。私はこれをMySQLでやっていませんが、SQL Serverに自動ナンバリングを追加しなければなりませんでした。基本的な考え方は同じです。

MySQLにはフィールドをリセットせずに自動インクリメントを追加する仕組みがあるかもしれないので、ドキュメントをチェックしてください。もしそうなら、それをSQL経由で実行すれば問題は解決します。一般に、これらのタイプの変更はツールを使用して視覚的に行うことをお勧めします。ほとんどのツールはメゾログで非常に破壊的です。

+1

phpMyAdminで新しいフィールドを追加しました。 Orederingはうまくいきませんが、重要ではありません。ありがとう – Bobo

0

"トラブルがあるかもしれません?"

だけでレコードを挿入するトラブルがあるかもしれません。しかし...

一般的に、新しいフィールドを追加すると、通常はそれが自動インクリメント列だかどうか、行うことはかなり安全です。すべての依存関係が不明な場合は、問題の原因となる可能性の高い列を変更または削除しています。

安全のために、念のために、しかし、私は最初のコピー(テスト)のバージョンでそれを試してみたし、最初のテスト版と照らし合わせてアプリ(複数可)を実行します。いずれにしてもテスト環境を使用するのがよい方法です。

あなたはあなたが心配しているどのようなタイプのトラブルについてより具体的になることができますか?

34

あなたのテーブルに他人との関係がない場合は、だけ問題なく追加できます

あなたは(おそらく古い主キーに一意のインデックスを追加します)古いプライマリキーを削除し、それに応じてテーブルをアップロードする必要があります。

はそのように実行します。

  • はそのように新しい列を追加することを

ALTER TABLE XXX DROP PRIMARY KEY 
  • のような主キーを削除し、データベースのダンプを作成します
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id) 

テーブルが表示され、AutoIncが更新されます。

7

これは私がMySQLのワークベンチで試してみましたソリューションです:

ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ; 

これは正しい方法であれば、私は知らないが、私はまだ私のJava EEアプリケーションのいずれかの問題に気付きませんでした。

+0

私はIDがキーの一部だったと思いますが、そうでなければエラーになります。 – siddhusingh

21

これは、MySQLのテーブルに自動インクリメントIDを追加します。

ALTER TABLE `your_table_name` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

あなたのテーブル上のデータの量に応じて、それが完了するまでに数分かかることがあります。

0

あなたはあなたがこの例で

ALTER TABLE `category` 
ADD PRIMARY KEY (`cat_id`); 
ALTER TABLE `category` 
MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT; 
1

を見ることができる自動増加フィールド

としてそれを作ることができる前に、あなたは、私は非常に大規模なデータを扱うとIDを持っていた最初の主キーとして追加する必要があるかもしれません列にはNULLSが入っています。私は数字でいっぱいにするために、次のSQLを実行する...私は私の主キーにid列を設定しました。

set @row = 0; 
UPDATE philadelphia.msg_geo_sal SET id = @row := @row + 1; 
関連する問題