3

私の前の開発者は、「Tools」というデータベーステーブルを作成しました。このテーブルには、toolid --varchar(255)とtoolname --varchar(100)の2つのフィールドが含まれています。

toolidフィールドのタイプはvarcharで、主キーです。テーブルにデータがあります。

varchar toolidフィールドをint型に変換したいのですが、キー付きのデータを保持しながら、このフィールドを自動インクリメントしたいと思います。

現在、キーは12、22、3などの数値です。

これを行うための最良の方法は何ですか?

4

4 に答える 4

5

もちろん、varchar フィールドを int フィールドに変更したい場合は、データ型の不一致のために変更できませんが、非常に簡単な修正方法は次のとおりです。

プライマリのすべてのフィールドを含む 2 番目のテーブルを作成します。

CREATE TABLE `Tools2` SELECT * FROM `Tools`;

ツール名を varchar から int に変更する必要があり、いっぱいになるとこれを行うことができないため、データを空にします。

TRUNCATE TABLE `Tools2`;

さて、フィールドタイプを変更しましょう。

ALTER TABLE `Tools2` CHANGE `toolname` `toolname` INT(11) NOT NULL;

元のテーブルからデータを再挿入しましょう。

INSERT INTO `Tools2` SELECT * FROM `Tools`;

Tools2 は Tools の正しいバージョンになったため、Tools を削除します。

DROP TABLE `Tools`;

最後に、Tools2 の名前を Tools に変更します。

RENAME TABLE `Tools2` TO `Tools`;
于 2012-10-16T09:29:39.083 に答える
0

次の 3 つのコマンドを試してください。

ALTER TABLE `Tools` CHANGE `toolid` `toolid` INT( 11 ) NOT NULL;
ALTER TABLE `Tools` ADD PRIMARY KEY ( `toolid` );
ALTER TABLE `Tools` CHANGE  `toolid`  `toolid` INT( 11 ) NOT NULL AUTO_INCREMENT;

値を調整する必要があるAUTO_INCREMENT場合:

ALTER TABLE `Tools` AUTO_INCREMENT = 10
于 2012-05-16T17:36:56.813 に答える
0

主キーとして設定されていない場合:

alter table tools add primary key (toolid);

Auto Increment 値を NEXT 値にしたい値に設定します (現在よりも 1 大きい:

alter table tools AUTO_INCREMENT=[value];

テーブル定義を変更します。

Alter Table Tools Change Column toolid toolid integer NOT NULL AUTO_INCREMENT;
于 2012-05-16T17:38:58.077 に答える
0

主キーに設定されています。これを回避する唯一の方法は次のとおりです。

SQL Server のような [データベース] タブに移動し、オプションや設定などに移動します。そこから、データベースに他のすべてのテーブルの主キーを更新するように指示し、GUI を使用してデータ型を変更するだけです。最初にオプションが選択されていることを確認する必要があります。そうしないと、変更を保存できません。

主キーが関連するテーブルのデータ型も変更する必要があります。

そのため、テーブル ツールを変更する場合は、リンク先のテーブルを変更する必要があります。

テーブルを削除して再作成する必要がある場合があります。その場合、使用しているエディターでこれを簡単に実行できます。実際には IDENTITY(1,1) 関数を使用して、各ツール ID の一意の識別子を作成できます。

同じツールIDを保持したい場合は、正しい列制限で新しいテーブルを作成する必要があります.insert intoステートメントを昇順で実行するか、そのようなものをテーブルに入力します...

于 2012-05-16T18:50:04.680 に答える