草庐IT

q_atomic_increment

全部标签

mysql - ALTER TABLE tbl AUTO_INCREMENT = 123 作为 codeigniter 事件记录查询?

如何执行ALTERTABLEtblnameAUTO_INCREMENT=123作为codeigniter事件记录查询?在codeigniter中有一个叫做dbforge->modify_column()的东西,我是否必须使用它,如果是的话如何? 最佳答案 试试这个$this->db->query("ALTERTABLEtable_nameAUTO_INCREMENT1");在AUTO_INCREMENT之后更改值,您希望从此处开始自动递增值$this->db->query("ALTERTABLEtable_nameAUTO_INCR

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 中重置 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的情况下向表中添加行(显然)要快很多倍。我的问题是:谁能想到原始程

mysql - InnoDB 中的 Auto_increment 值?

我一直在为一个项目使用InnoDB,并且依赖于auto_increment。这对大多数表来说不是问题,但对于删除的表来说,这可能是个问题:AUTO_INCREMENTHandlinginInnoDB特别是这部分:AUTO_INCREMENTcolumnnamedai_col:Afteraserverstartup,forthefirstinsertintoatablet,InnoDBexecutestheequivalentofthisstatement:SELECTMAX(ai_col)FROMtFORUPDATE;InnoDBincrementsbyonethevalueretri

多行插入中的 MySQL AUTO INCREMENT 行为

我认为我的问题的答案很明显,但由于找不到任何文档来支持它,所以我认为值得一问。至少为了记录。众所周知,每次执行INSERT语句时,AUTO_INCREMENT字段都会递增。它的值可以通过LAST_INSERT_ID()函数获取。MySQL'sManual中也提到了它对于多行插入,LAST_INSERT_ID()将返回插入行的第一个ID。我认为这是个好主意(真的很有用)。所以这是我的问题:我可以假设在多行的INSERTIGNOREINTO语句中,AUTO_INCREMENT字段的插入ID总是顺序的吗?请记住,由于IGNORE修饰符和MySQL服务器的多用户特性,可能会发生不同的情况。谢谢

mysql - 在 MySQL 中查找 AUTO_INCREMENT 列的下一个值

这个问题在这里已经有了答案:Howtogetthenextauto-incrementidinmysql(21个答案)关闭8年前。我正在使用MySQL。我想在不输入新记录的情况下检索AUTO_INCREMENT列将采用的下一个值。createtableABC(idint(10)NOTNULLAUTO_INCREMENT,namechar(10));在Oracle中我会使用sequencename.nextval();但是在MySQL中我应该使用什么?这就是我不使用的原因selectmax(id)fromABC;假设我有一个id=2的条目。现在列id会将下一个值设为3。在我创建一条id=