我有一张放东西的table。物体可以是从椅子到雇员的任何东西。一个对象得到了一个objectid,它是对象上一个10个字符的code-39条形码标签。
许多对象已经有了标签,因此分配给它们的objectid。有些有前缀,例如“900000345”可能是办公桌,“0000000895”可能是带有发票的文件夹。
例如,当人们创建一个新文件夹时,他们会把预先打印好的条形码标签放在上面。预打印的条形码标签由打印机生成,打印机只需将数字增加1,然后将其填充为10位数字,然后将其打印为代码39。
所有大多数对象都存储在excel表中。现在应该将它们迁移到mysql数据库中。
现在,系统还应该能够自己创建对象。系统创建的对象有一个前导“1”,例如“1000000426”。
问题:如何为自动生成的对象获取下一个objectid?我不能真正使用自动增量,因为表中还有非自动生成的行。
另一个需要说明的是'objectid'字段必须是char(10),因为在特殊情况下,会使用字母数字前缀,如“t1”->“t100003158”
使用自动增量时的我的表:
| ID | Created | ObjectID | Parent | Title | Changed | Note |
|----|-------------|--------------|--------|-------------|-------------|------|
| 1 | <timestamp> | "1000000001" | NULL | "Shelf 203" | <timestamp> | NULL |
| 2 | <timestamp> | "9000000458" | NULL | "Lamp" | <timestamp> | NULL |
| 3 | <timestamp> | "1000000003" | NULL | "Shelf 204" | <timestamp> | NULL |
表中最后一个对象的objectid应该是“1000000002”而不是“1000000003”
我希望我能很好地解释这个问题。
1条答案
按热度按时间xtupzzrd1#
简单的解决方案可以是:
基本上从1开始搜索所有对象id,然后对它们进行排序(因为它的零填充我们仍然可以排序),然后将结果转换为int并递增。
先转换为int然后在两者之间转换可能会更快。其他的也一样