首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么ALTER用于更改AUTO_INCREMENT变量?

为什么ALTER用于更改AUTO_INCREMENT变量?
EN

Stack Overflow用户
提问于 2016-08-29 13:06:30
回答 2查看 204关注 0票数 1

使用MySQL,当您想要更改密码或字符集时,您可以这样做:

代码语言:javascript
运行
复制
SET CHARACTER_SET_RESULTS = 'utf8';

但是,当您想要更改表的自动增量变量时,需要使用不同的语法:

代码语言:javascript
运行
复制
ALTER TABLE foobar AUTO_INCREMENT=1;

这使我想知道,如果它是这样的话,它是否会更加一致:

代码语言:javascript
运行
复制
SET AUTO_INCREMENT=1;

因为某些SET操作适用于表。但我想,这种语法选择肯定有一些原因。在查看文档时,我发现了以下内容:

ALTER更改表的结构。例如,可以添加或删除列,创建或销毁索引,更改现有列的类型,或重命名列或表本身。您还可以更改诸如用于表或表注释的存储引擎等特性。

但是使用SET关键字,您也可以更改表的结构,我想是吗?如果我弄错了,请纠正我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-29 13:12:26

变量赋值的SET语法使您能够为影响服务器或客户端操作的不同类型的变量分配值:

  • 系统变量。参见6.1.4节,“服务器系统变量”。系统变量也可以在服务器启动时设置,如第6.1.5节“使用系统变量”中所述。
  • 用户定义的变量。见第10.4节,“用户定义变量”。
  • 存储过程和函数参数,以及存储的程序局部变量。见14.6.4节,“存储程序中的变量”。

资料来源: http://dev.mysql.com/doc/refman/5.7/en/set-variable.html

SET是整个服务器/数据库的操作。不能只为特定的表设置AUTO_INCREMENTSETAUTO_INCREMENT信息存储在表本身上。它不是一个全局变量,因为有些表可以有AUTO_INCREMENT=1,而其他表可以有AUTO_INCREMENT=[another-int-value]

要从1以外的AUTO_INCREMENT值开始,使用CREATE TABLEALTER TABLE设置该值,如下所示:ALTER TABLE tbl AUTO_INCREMENT = 100; 资料来源: http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

票数 3
EN

Stack Overflow用户

发布于 2016-08-29 13:13:34

通过SET,您可以更改未绑定到特定表的mysql变量。

如果要更改auto_increment变量,则对特定表进行更改。这就是为什么您需要使用ALTER语法。

此外,使用create设置的任何内容都可以使用ALTER进行更新。创建表时设置auto_increment。如果不设置它,则默认为1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39207097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档