我之前的开发人员创建了一个名为“Tools”的数据库表,它包含两个字段,toolid - varchar(255) 和 toolname - varchar(100)。
toolid 字段的类型是 varchar,它是主键。表中有数据。
我想将 varchar toolid 字段转换为 int 类型,同时使用它们的键保存数据,我也希望该字段自动递增。
当前键是数字,例如 12 或 22 或 3。
最好的方法是什么?
我之前的开发人员创建了一个名为“Tools”的数据库表,它包含两个字段,toolid - varchar(255) 和 toolname - varchar(100)。
toolid 字段的类型是 varchar,它是主键。表中有数据。
我想将 varchar toolid 字段转换为 int 类型,同时使用它们的键保存数据,我也希望该字段自动递增。
当前键是数字,例如 12 或 22 或 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,因此请删除 Tools。
DROP TABLE `Tools`;
最后,将 Tools2 重命名为 Tools,这样您就可以开始使用了。
RENAME TABLE `Tools2` TO `Tools`;
Try these three separate commands:
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;
If you need to adjust the AUTO_INCREMENT
value:
ALTER TABLE `Tools` AUTO_INCREMENT = 10
如果未将其设置为主键:
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;
它被设置为主键,解决这个问题的唯一方法是:使用
SQL Server 并上至类似的数据库选项卡下至选项或首选项或其他内容:从那里您可以告诉数据库更新所有其他表中的主键,只需使用 GUI 更改数据类型。您必须确保首先选择该选项,否则将不允许您保存更改。
无论主键与数据类型相关的任何表都需要更改。
因此,如果您更改表格工具,您将不得不更改它链接到的表格,如果是这种情况。
您可能必须删除并重新创建表,在这种情况下,您可以在使用的任何编辑器中轻松完成此操作。您实际上可以使用 IDENTITY(1,1) 函数为每个工具 ID 创建唯一标识符。
如果要保留相同的工具ID,则必须使用正确的列约束创建一个新表,通过按升序运行插入语句或类似的方法来填充表...