どのように最後に最高のidから自動インクリメントにデータをMySQLのテーブルを既存にIDを変更するには?

StackOverflow https://stackoverflow.com/questions/4027954

質問

私は、SQL ServerからMySQLへの非常に大きなデータベースを移行するために管理しています。テーブルが別のテーブルの外部キーです主キーとしてIDに基づいて関係を持っているので、私は、移行時に自動インクリメントの主キーを設定しませんでした。

これで新しいレコードを追加するために、私は自動インクリメントするすべてのテーブルに主キーの「ID」列を変更したいが、各テーブルのid列の最後の最高数から始めます。

私が既に持っている関係を失うことなく、これを行うための最善の方法は何ですか?

UPDATE:自動インクリメントを追加しようとすると、私は、このエラーを与えます:

ERROR 1067: Invalid default value for 'id'

SQL Statement:

ALTER TABLE `skandium`.`brands` CHANGE COLUMN `id` `id` INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT

ERROR 1050: Table 'brands' already exists

SQL Statement:

CREATE TABLE `brands` (
  `id` int(11) NOT NULL DEFAULT '0',
  `brand` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
役に立ちましたか?

解決

ちょうどあなたの必要な列の自動インクリメントを追加します。これは、既存の行には影響しません。これは、次の使用可能な値で開始します。

カラムは、あなたがそれに値を指定しない場合は、1つは、MySQLで追加されるだけのことを自動インクリメント手段であることこと

注。あなたが明示的に値を指定したい場合は、何も特別な出来事せずに行うことができます。あなたがそうすることは、最初から自動インクリメント右にこれらの列を設定している可能性があります。

自動インクリメントを持つカラムが明示的なデフォルト値を持っていないことができます。

のテスト済み

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top