将设置为varchar的主键字段转换为int字段

时间:2012-05-16 17:21:36

标签: mysql

我之前的开发人员创建了一个名为“Tools”的数据库表,它包含两个字段:toolid - varchar(255)和toolname - varchar(100)。

toolid字段的类型为varchar,它是主键。表格中有数据。

我想将varchar toolid字段转换为int类型,同时使用它们的键来保存数据,我也希望这个字段是自动递增的。

目前,密钥是数字的,例如12或22或3.

这是最好的方法吗?

4 个答案:

答案 0 :(得分:3)

如果你只想将varchar字段更改为int字段,当然它不会让你,因为数据类型不匹配,但是,一个非常简单的修复是:

创建第二个表格,其中包含主要字段中的所有字段。

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的正确版本,因此请删除工具。

DROP TABLE `Tools`;

最后,将Tools2重命名为Tools,这样你就可以了。

RENAME TABLE `Tools2` TO `Tools`;

答案 1 :(得分:0)

尝试以下三个单独的命令:

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

答案 2 :(得分:0)

如果未将其设置为主键:

alter table tools add primary key (toolid);

将自动增量值设置为您希望NEXT值的值(比您当前高1:

alter table tools AUTO_INCREMENT=[value];

更改表格定义:

Alter Table Tools Change Column toolid toolid integer NOT NULL AUTO_INCREMENT;

答案 3 :(得分:0)

它被设置为主键,唯一的方法是:使用

SQL Server,然后转到类似数据库选项卡,转到选项或首选项或其他内容:从那里,您可以告诉数据库更新所有其他表中的主键,只需使用GUI来更改数据类型。您必须确保首先选择该选项,否则它将不允许您保存更改。

主键与数据类型相关的表格也需要更改。

因此,如果您更改表格工具,则必须更改与其链接的表格,如果是这种情况。

您可能必须删除并重新创建表格,在这种情况下,您可以在任何使用的编辑器中轻松完成此操作 您实际上可以使用IDENTITY(1,1)函数为每个工具类创建唯一标识符。

如果你想保持相同的工具ID,你必须创建一个具有正确列限制的新表,通过按升序运行insert into语句来填充表格......