栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在mysql表中创建一个ID auto_increment(在事实之后)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在mysql表中创建一个ID auto_increment(在事实之后)

例如,这是一个具有主键但不是的表

AUTO_INCREMENT

mysql> CREATE TABLE foo (  id INT NOT NULL,  PRIMARY KEY (id));mysql> INSERT INTO foo VALUES (1), (2), (5);

您可以

MODIFY
使用以下
AUTO_INCREMENT
选项将该列重新定义:

mysql> ALTER TABLE foo MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;

验证这已生效:

mysql> SHOW CREATE TABLE foo;

输出:

CREATE TABLE foo (  `id` INT(11) NOT NULL AUTO_INCREMENT,  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1

请注意,您已经修改了列定义,而无需创建第二列并删除原始列。该

PRIMARY KEY
约束是不受影响的,你不需要提及的
ALTER TABLE
声明。

接下来,您可以测试插入是否生成新值:

mysql> INSERT INTO foo () VALUES (); -- yes this is legal syntaxmysql> SELECt * FROM foo;

输出:

+----+| id |+----+|  1 | |  2 | |  5 | |  6 | +----+4 rows in set (0.00 sec)

我在Mac OS X的MySQL 5.0.51上对此进行了测试。

我还测试了

ENGINE=InnoDB
和依赖表。修改
id
列定义不会中断引用完整性。


为了响应您在注释中提到的错误150,这可能与外键约束冲突。我道歉,在测试之后,我认为它会起作用。这里有一些链接可能有助于诊断问题:

  • mysql错误1025(HY000):“ ./ foo”重命名错误(错误编号:150)是什么意思?
  • http://www.simplicidade.org/notes/archives/2008/03/mysql_errno_150.html


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号