私はmysqlに奇妙な問題があります。Mysql - プライマリキーにauto_incrementを追加
プライマリキーでauto_increment制約が定義されているテーブルの列を変更しようとしています。これはまた、複数の他のテーブルの外部キー参照です。 親とすべての子の両方でこの列の長さを変更する必要があります。
set foreign_key_checks=0;
alter table Parent modify Identifier smallint(10) unsigned;
alter table Child_1 modify FK_Identifier smallint(10) unsigned;
alter table Child_2 modify FK_Identifier smallint(10) unsigned;
alter table Child_3 modify FK_Identifier smallint(10) unsigned;
alter table Child_4 modify FK_Identifier smallint(10) unsigned;
alter table Child_5 modify FK_Identifier smallint(10) unsigned;
set foreign_key_checks=1;
これにより、親テーブルの自動インクリメントが削除されます。制約を追加する最善の方法は何でしょうか?
以下は失敗しているようです。
mysql> ALTER TABLE Parent MODIFY Identifier smallint(10) PRIMARY KEY AUTO_INCREMENT;
ERROR 1068 (42000): Multiple primary key defined
ALTER TABLE Parent MODIFY Identifier smallint(10) AUTO_INCREMENT;
------------------------
LATEST FOREIGN KEY ERROR
------------------------
110125 15:49:08 Error in foreign key constraint of table db/Child_1:
there is no index in referenced table which would contain
the columns as the first columns, or the data types in the
referenced table do not match to the ones in table. Constraint:
,
CONSTRAINT Child_1_ibfk_1 FOREIGN KEY (FK_Identifier) REFERENCES RoomProfile (Identifier) ON DELETE CASCADE ON UPDATE CASCADE
The index in the foreign key in table is PRIMARY
これを行うより良い方法はありますか?
編集:ショー(ALTERの後)で作成します。ALTER
`Identifier` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
前
CREATE TABLE `Parent` (
`Identifier` smallint(10) unsigned NOT NULL default '0',
`Name` varchar(20) default NULL,
`Description` varchar(100) default NULL,
PRIMARY KEY (`Identifier`),
UNIQUE KEY `Name` (`Name`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
ありがとう!
あなたは、私は同じ結果にポストを更新しましたParent' – Mchl