草庐IT

auto-increment

全部标签

php - 如何从mysql中的一个以外的值开始自动增加列值?

我有一个现有的mysql表,其中id列定义为主,自动增量设置为true。现在,我想知道是否可以将自动增量设置为从预定义值开始,比如5678,而不是从1开始。我还想知道我是否可以设置自动递增的步长,比如每次插入新记录时增加15(而不是默认的增量值1)。注意-我正在使用phpmyadmin来处理数据库,我有很多表但只有一个数据库。谢谢。 最佳答案 ALTERTABLEtblAUTO_INCREMENT=5678将为该表将自动增量设置为5678。看详细资料here. 关于php-如何从mysq

mysql - 如何在 mySQL 中使用自动递增列

我如何将insertinto语法用于自动递增的mysql列?例如:INSERTINTOtable(auto,firstname,lastname)VALUES('Dan','Davidson')上面的代码可以工作并在自动递增的同时填写名字和姓氏列吗? 最佳答案 不需要在字段列表中列出自增列,无论什么情况都会自增:INSERTINTOtable(firstname,lastname)VALUES('Dan','Davidson') 关于mysql-如何在mySQL中使用自动递增列,我们在S

php - 是否总是需要向用户隐藏 mysql 生成的 id?

向用户显示由数据库自动递增的实际ID是否存在安全风险?你能举一些实际的例子来说明人们可以用它做什么危险吗? 最佳答案 不,它在许多情况下使用。如果您的网站以其他方式存在漏洞,比如SQL注入(inject)或XSS,他们可能会使用该ID来做一些有害的事情。但永远不要单独使用ID。只需查看您在SO的个人资料,您的ID就是243414 关于php-是否总是需要向用户隐藏mysql生成的id?,我们在StackOverflow上找到一个类似的问题: https://s

mysql - 如何从 1 更新 id 集?

我有一个id即主键和自动递增。是否有任何查询来更新我现有的id并使我的id从1开始,下一个id2等等..例如idname3ABC5XYZ9PQR注意:id已经是主要的和自动递增的,我不想截断我的id。如果可能我想得到idname1ABC2XYZ3PQRALTERTABLEtableAUTO_INCREMENT=1;不是我的解决方案。谢谢 最佳答案 当然有办法:set@counter=0;updatetable_namesetid=(@counter:=@counter+1);编辑为避免重复键的问题,您可以在将当前ID临时更改为负等价

mysql - 计算 auto_increment 与其最大值的接近程度的简便方法?

所以昨天我们有一个表,它有一个达到最大值的smallint的auto_incrementPK。我们不得不在紧急情况下更改表格,这绝对不是我们喜欢的方式。是否有一种简单的方法来报告我们使用的每个auto_increment字段与其最大值的接近程度?我能想到的最好方法是执行SHOWCREATETABLE语句,解析出自动递增列的大小,然后将其与表的AUTO_INCREMENT值进行比较。另一方面,鉴于架构不会经常更改,我是否应该存储有关列最大值的信息并使用SHOWTABLESTATUS获取当前的AUTO_INCREMENT? 最佳答案 我

mysql - 使用子查询mysql在同一个表中更改auto_increment

我正在使用mysql。我有一个带有auto_increment计数器集的数据库表。现在由于一项要求,我需要保留100个起始ID,并从101开始移动所有现有记录,因此当前ID1将变为101,ID2将变为102,依此类推。我可以将记录移动到101,但问题是如何将auto_increment计数器更改为max(id)+1。我的主要限制是我需要在单个sql语句中完成。我无法使用@counter保存该值并在以后使用它。我尝试使用下面的查询ALTERTABLEroleAUTO_INCREMENT=(SELECTrd.counterFROM(SELECT(MAX(id)+1)AScounterFRO

sql - 你可以在 MySql 中使用自动增量而不是它是主键吗

我使用GUID作为所有其他表的主键,但我有一个需要递增数字的要求。我试图在表中创建一个自动递增的字段,但MySql提示说它需要作为主键。我的应用程序使用MySql5,nhibernate作为ORM。我想到的可能的解决方案是:将主键更改为自动递增字段,但仍将Id作为GUID,以便我的应用程序的其余部分保持一致。使用GUID和自动递增字段创建复合键。我目前的想法倾向于复合关键思想。编辑:行ID(主键)是当前的GUID。我想添加一个自动递增的INT字段,以便它是人类可读的。我只是不想放弃应用程序中将GUID作为主键的当前标准。 最佳答案

MySQL current_insert_id()? (不是 last_insert_id())

我正在插入一个带有char列的行,用于基于(除其他事项外)该行的自动ID的散列。我知道我可以插入它、获取insert_id、计算哈希并更新它。有谁知道在单个查询中执行此操作的方法吗?您在插入时需要行insert_id。那是完全不可能的,还是有类似current_insert_id()...谢谢! 最佳答案 不,MySQL中没有函数可以为您提供current_insert_id()。从MySQL中的AUTO_INCREMENT字段获取生成的ID值的唯一方法是执行INSERT,然后调用last_insert_id()。因此,您可能需要执

mysql auto_increment 5?

我遇到了一个非常非常非常奇怪的mysql问题。我有一个主键“id”。它设置为自动递增。问题是,第一个条目从“3”开始。每个新条目增加5,所以下一个条目的id是8,下一个是13,然后是18,依此类推。这是愚蠢的。为什么它不像应该的那样只增加1?为什么从3点开始???我是否缺少某些设置?如果有帮助,我正在使用phpmyadmin。 最佳答案 有一个my.cnf配置:auto_increment_increment.它用于主-主服务器设置,以防止相同的key被两个不同的服务器定义两次。因此,将其与auto_increment_offset

mysql - key '6343' 的重复条目 'PRIMARY'

我在尝试向数据库添加记录时开始收到上述错误。相关列设置为“auto_increment”,数据类型为“INT”,长度为10。在线查看时,我发现当自动递增的列达到其上限时可能会发生此错误-但是在这种情况下,该表仅包含6342条记录,并且该列应该能够容纳更多记录。事实上,所讨论的应用程序在多个安装中使用,在某些情况下,具有相同结构的等效表具有比这更多的记录而不会产生错误。更奇怪的是,当我将此列的数据类型更改为“BIGINT”时,它解决了问题-即使在其他安装上它仍然与更多记录相同。任何人都可以提出可能发生此问题的任何原因吗?提前致谢。 最佳答案