草庐IT

increment

全部标签

MySQL:仅使用偶数或奇数自动递增?

是否有可能生成偶数或奇数的自动递增字段(跳过相反的数字)?我问的原因是因为我想在两个表之间共享自动增量。欢迎其他实现它的方法。提前致谢! 最佳答案 正如Juergen所提到的,您可以通过在my.ini文件中进行以下更改(或添加)来在系统级别而不是session级别执行此操作:auto-increment-increment=2auto-increment-offset=1或auto-increment-increment=2auto-increment-offset=2基本上这在主-主复制设置中用得很多。

mysql - 可以将非顺序 ID 作为数据库中表的主键吗?

我对数据库的了解还不够,找不到合适的词来问这个问题,所以让我举个例子来解释我正在尝试做的事情:假设我想要一个表的主键是一个ID我从一个API中获取,但大多数API请求都会导致404错误。结果,我的表​​看起来像这样:我也不知道如何在StackOverflow上格式化类似表格的结构,所以这将是一个粗略的视觉效果:API_ID_PK|name------------------1|Billy5|Timmy23|Richard54|Jobert104|BroccoliID可以不用1位顺序分隔吗?或者我应该这样做:IDPK|API_ID|NAME------------------------

mysql - 缓慢的 auto_increment 重置

我有很多表,由于某些原因,我需要在应用程序启动时调整这些表的自动增量值。我尝试这样做:mysql>selectmax(id)fromitem;+----------+|max(id)|+----------+|97972232|+----------+1rowinset(0.05sec)mysql>altertableitemauto_increment=1097972232;在另一个session中:afrolov@A1-DB1:~$mysql-uroot-e"showprocesslist"|grepauto_increment472196rootlocalhosttestQuer

mysql - MySQL 中的范围 AUTO_INCREMENT?

我在Rails应用程序中使用MySQL。我有一个users表(标准的东西,如id、name等)和一个books表(同样有id、user_id和title等)。我想要一个列(我们称之为user_book_id),它应该像id一样自动递增,但范围在user_id范围内。就像id一样,即使在books表中删除了一条记录,user_book_id也不应该被重用。一个例子:Userid|Name------------1|Jerry2|NewmanBookid|user_id|user_book_id|Title-----------------------------------1|1|1|J

sql - MySQL如何在单个查询中执行if exist increment

我只希望有一个表来按天存储一些事件。给定一个表:createtabletotals(entrydaydate,totalint(11)default0notnull,primarykey(entryday));我如何编写一个简单的查询,它会递增,但会创建一个必要的查询?我试过了-但它没有递增(它保持在1):REPLACEtotalsSETtotal=total+1,entryday="08-01-11"显然这可以在2个查询中非常简单地完成,但它是通过JDBC调用并且可能会被调用多次,所以1个查询会更好。 最佳答案 你可能想要ONDU

mysql - 从 MySQL 中的 TRIGGER 中更改 LAST_INSERT_ID()

我有一个BEFOREINSERTTRIGGER用于计算AUTO_INCREMENT列的值(id_2)。id_1|id_2|data1|1|'a'1|2|'b'1|3|'c'2|1|'a'2|2|'b'2|3|'c'2|4|'a'3|1|'b'3|2|'c'我有PRIMARY(id_1,id_2)并且我正在使用InnoDB。之前,该表使用的是MyISAM,我没有遇到任何问题:id_2被设置为AUTO_INCREMENT,因此id_1的每个新条目会生成新的id_2在其自己的。现在,在切换到InnoDB之后,我有这个触发器来做同样的事情:SET@id=NULL;SELECTCOALESCE(

mysql - 如何防止mySQL重置自动增量值?

我有一个表来制作临时id`s。当我删除表中的所有行时,该表的自动增量值将重置为0。但我不想重置自动增量。我能做什么? 最佳答案 比较TRUNCATETABLE:AnyAUTO_INCREMENTvalueisresettoitsstartvalue.ThisistrueevenforMyISAMandInnoDB,whichnormallydonotreusesequencevalues....与DELETEFROM:IfyoudeletetherowcontainingthemaximumvalueforanAUTO_INCREM

mysql - 在 MySQL 中重置 AUTO_INCREMENT 需要很长时间

ALTERTABLEtablenameAUTO_INCREMENT=10000000此查询需要很长时间才能更新。为什么?我需要优化这个查询。 最佳答案 ALTERTABLE会导致整个表的重建-如果您的表包含很多行,这可能需要很长时间。如果您只需要提高auto_increment值的值,最快的方法是插入一个虚拟行(然后在需要时删除该行)。这只需要几分之一秒,而ALTERTABLE对于大表可能需要几天时间。例如,假设我有一个表,其中有一个auto_incrementID列和其他列col1、col2...:insertintoautoin

mysql - 我怎样才能找到一个列是否在 mysql 中是 auto_increment?

我正在尝试检查我的mysql数据库information_schema以找出列的属性。我找不到关于哪些列是auto_increment的详细信息。有谁知道我可以在information_schemaDB中的哪个位置找到此信息? 最佳答案 查看COLUMNS表中的EXTRA列:select*fromCOLUMNSwhereTABLE_SCHEMA='yourschema'andTABLE_NAME='yourtable'andEXTRAlike'%auto_increment%' 关于my

mysql - 有什么理由不在数据库表的索引上使用 auto_increment 吗?

我接手了维护一个编码非常糟糕的电子商务网站的任务,我正在努力重构大量代码并尝试修复持续存在的错误。每个数据库插入(将商品添加到购物车等)都以grab_new_id函数开始,该函数计算表中的行数,然后从该数字开始查询数据库以查找未使用的索引号。除了在性能方面很糟糕(已经有40,000多行,索引被定期删除,所以有时需要几秒钟才能找到一个新的id)当两个操作同时执行时,这会定期中断,因为添加了两个条目具有重复的ID号。这对我来说似乎很愚蠢——为什么不在索引字段上使用自动递增呢?我已经对这两种方式进行了测试,并且在不指定索引ID的情况下向表中添加行(显然)要快很多倍。我的问题是:谁能想到原始程