2

かなり大きなデータベースを SQL Server から MySQL に移行することができました。テーブルには、別のテーブルの外部キーである主キーとしての ID に基づく関係があるため、移行中に主キーを自動インクリメントに設定しませんでした。

新しいレコードを追加するために、すべてのテーブルの主キー 'id' 列を自動インクリメントに変更しますが、各テーブルの id 列の最後の最大数から開始します。

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

更新:自動インクリメントを追加しようとすると、次のエラーが表示されます:

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
4

1 に答える 1

1

必要な列に自動インクリメントを追加するだけです。既存の行には影響しません。次に利用可能な値から始まります。

自動インクリメントされる列は、値を割り当てない場合、MySQLによって追加されることを意味することに注意してください。明示的な値を指定する場合は、特別なことを行わずに指定できます。したがって、これらの列を最初から自動インクリメントするように設定することもできます。

自動インクリメントのある列に明示的なデフォルト値を設定することはできません。

テスト済み

于 2010-10-26T21:03:53.857 に答える