在数据库中重新定位列将删除自动增量约束

时间:2017-01-24 10:50:14

标签: mysql

这有点奇怪,但在工作时多次注意到这一点。我有一个表格,其中有列名称' id'使用auto_increment约束。如果我尝试重新定位此列(即id)auto_increment约束被删除。下面我提供了图片和查询。此操作在mysql数据库上执行。

原始表, enter image description here

查询:alter table login_client modify id int(11) first;

查询后, enter image description here

正如您在第二张图片中看到的那样。约束auto_incremnt刚刚消失。

3 个答案:

答案 0 :(得分:2)

查看文档:

https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

它说:

  

使用CHANGE或MODIFY时,column_definition必须包含应该应用于新列的数据类型和所有属性,而不是索引属性(如PRIMARY KEY或UNIQUE)。

这是设计使然,因此当您以这种方式更改列时,您需要重新创建要应用于它的任何属性。请注意,AUTO_INCREMENT在技术上是一个属性,而不是约束。

您可以在命令中轻松地重新指定auto_increment属性,如下所示:

alter table login_client modify id int(11) auto_increment first;

答案 1 :(得分:1)

首先auto_incrementDefault Value列的额外属性。

当您在任何表格中modify column时,您必须提供列的所有额外属性。

alter table login_client modify id int(11) auto_increment first;

答案 2 :(得分:0)

试试这个。 它会自动增加给定的字段。

alter table login_client modify id  int  auto_increment