我的db"id" int(11) NOT NULL AUTO_INCREMENT,
中有一列,我希望此表中有多行具有相同的id
值。所以当插入到表中时,我想告诉它是应该增加还是保持sasme的值。有什么简单的方法可以做到吗?
最佳答案
正如auto_increment上的MySQL文档所说(突出显示是我的):
没有为AUTO_INCREMENT列指定值,因此MySQL
自动分配序列号。您还可以显式地
将0赋给列以生成序列号,除非
未启用0 SQL模式下的自动值。如果列被声明
不为空,也可以将空值赋给要生成的列
序列号。当您将任何其他值插入
自动递增列,该列设置为该值,并且
序列被重置,以便下一个自动生成的值
从最大列值开始按顺序排列。
这意味着,如果在插入之前确定AutoYLoad字段的当前最大值,并在INSERT语句中显式插入该值,则可以在AutoYLoad字段中重复值。
有几件事你需要注意:
如果可以在表中进行并行插入,则可能需要锁定表以供读取,因此另一个进程不会插入触发字段增量的新记录。
不能对“自动递增”字段使用主索引/唯一索引约束。
另一种方法是有一个单独的表,只用于auto_increment,而不在主表中使用auto_increment。如果您需要一个新的id,那么只需将一条记录插入到自动递增表中,获取递增的id,并使用它将一条记录插入到主表中。否则,只需从主表中获取id值并在insert中使用它。
关于mysql - 仅在需要时使用自动增量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40863565/