草庐IT

auto-increment

全部标签

mysql - 重置 AUTO_INCREMENT 不起作用

我在MySQL中有一个名为Person的表。有一列id具有UNIQUE和AUTO_INCREMENT属性以及一个主键。我想重置id的计数器,以便它从1重新开始。我使用了以下SQL语句:ALTERTABLEPersonAUTO_INCREMENT=1;但是在我应用此更改后,id仍然从我最后的位置(130)开始,而不是从1开始。那么为什么此重置不起作用? 最佳答案 使用TRUNCATETABLE因为这将重置自动增量来自documentation...从MySQL5.0.13开始,无论是否有外键约束,AUTO_INCREMENT计数器都会

mysql - 自动增量重置为 0,但无法插入 id=0 的值。值 >0 时不会发生

我刚刚偶然发现了一个非常奇怪的行为:假设我们有一张tablecustomers:MariaDB[connections]>describecustomers;+--------------+-------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+--------------+-------------+------+-----+---------+----------------+|customerId|int(11)|NO|PRI|NULL|auto_incre

mysql - 为什么 auto_incremnt 列在插入语句失败后增加它的值

这个问题在这里已经有了答案:WhydoesMySQLautoincrementincreaseonfailedinserts?(4个答案)关闭9年前。我正在使用MySQL。我创建了两个新表。在Employees表中插入一个新行后,我故意尝试在Orders表中插入一个新行,其引用在Employees表中不存在(我知道它会产生错误)。之后,当我尝试在Orders表中插入一个新行时,其引用存在于Employees表中,它执行成功但现在第一行Orders表的id为2。为什么即使第一个插入语句失败它也会增加CREATETABLEEmployees(EmpIDSMALLINTNOTNULLAUTO

mysql - 如果达到最大值,自动增量是否会再次从 0 开始?

MySQL的自增达到最大值后是否重置为0?换句话说,如果带有AUTO_INCREMENT的UNSIGNEDSMALLINT列达到65535,在新的INSERT上会发生什么?如果没有可用值,会发生什么? 最佳答案 文档非常清楚发生了什么:Whenthecolumnreachestheupperlimitofthedatatype,thenextattempttogenerateasequencenumberfails.了解它here.所以您的问题的答案是“否”。它会产生一个错误。 关于my

mysql - 自动递增 - 每年自动重置

MySQL/InnoDB在我的例子中,我的收据应该按年计算;1/2015、2/2015...556/2015等等。明年来的时候,计数器又要从1开始,收据应该算作1/2016,2/2016...如何定义每年自动重置的auto_increment字段?RCID|RCNO|RCYEAR|...=====+======+========+====200|1|2015|201|2|2015|...|...|2015|756|556|2015|注意:RCID是标准的PK自动递增字段。 最佳答案 在@RickJames的帮助下,解决方案是:CRE

MySQL - 如何永久设置 auto_increment_increment,直到最后一次服务器重启?

是否可以设置MySQLauto_increment_increment使其在服务器重启后仍然存在?目前我是这样设置的:SET@@auto_increment_increment=2;但是当我:sudoservicemysqlrestart并返回到默认值1。我在AWS上,我希望能够尽可能轻松地处理可能的世界末日错误:通过从AMI设置一个新实例。我希望它在启动时立即准备好服务,并避免手动设置auto_increment_increment值之类的事情。 最佳答案 在my.ini或my.cnf中设置[mysqld]auto_increme

mysql - mysql中的AUTO_INCREMENT可以默认签名吗?

我明白,column下面默认是signedint。idINT(6);下面指定的autoincrementcolumn是否可以默认签名?Mysql的自增列的值从1开始。idINT(6)AUTO_INCREMENTPRIMARYKEY 最佳答案 是的,您可以使用带符号的int创建一个自动递增主键。试试这个:CREATETABLEmytable(idint(6)AUTO_INCREMENTPRIMARYKEY);那么下面的查询都是有效的INSERTINTOmytablevalues();INSERTINTOmytablevalues(-1

mysql 添加自动增量和附加键

我正在尝试通过添加一个新列来更改表,将其设置为自动递增并使用一个键。该表已经有一个键,这个将被添加。我得到的错误如下。error:Multipleprimarykeydefined我的代码是:altertableuseraddcolumnidint(11)NOTNULLAUTO_INCREMENTPRIMARYKEYFIRST;我也尝试包装键名即altertableuseraddcolumnidint(11)NOTNULLAUTO_INCREMENTPRIMARY(id)KEYFIRST;但仍然没有运气。如何做到? 最佳答案 nat

MySQL 将列定义为具有 AUTO_INCREMENT 的 UNIQUE 而不是作为主键

我正在与一名契约(Contract)开发人员合作,他开始在没有定义主键的情况下创建表(MySQL)。相反,他定义了一个带有UNIQUE约束和AUTO_INCREMENT的列。我以前从未见过这样做,所以我想了解以这种方式定义表的含义。一个缺点是无法在需要时创建外键。以这种方式创建表还有其他一些影响,无论好坏。也许我在这里漏掉了一个概念…… 最佳答案 在没有显式主键的情况下定义MySQL是一个非常非常糟糕的主意。如果缺少PK,MySQL将创建一个隐式(但非常真实)整数自增主键。此PK将包含在InnoDB中的每个辅助键中,并将确定您在My

java - MySQL Java JDBC : How to get the name of an auto-incremented column?

我正在开发一个使MySQL数据库的使用更简单的程序。现在我必须创建表单来添加和编辑数据库中表中的数据。问题是,当我创建表单时,我不想显示自动递增列的字段。我只需要列的名称来解决这个问题,但我不知道如何找到自动递增列的名称。我曾尝试查找答案,但我找到的只是有关查找自动生成key的信息。有人可以帮助我或指出正确的方向吗?感谢您的帮助。更新:谢谢您的帮助。根据以下答案,我想出了这个方法:publicVectorgetAutoIncrementedColumns(Stringtable){VectorcolumnNames=newVector();Connectionconnection;tr