我需要为插入数据库的每个项生成编码字符串。例如:
x00001 for the first item
x00002 for the sencond item
x00003 for the third item
我选择这样做的方法是计算行数。在插入第三个项目之前,我计算数据库,我知道已经有2行,所以下一个编码以3结束。 但有一个问题。如果我删除第二个项目,则第四个项目将不是x00004,而是x00003。
我可以在表中添加其他列,以存储下一个编码,我不知道是否还有其他更好的解决方案?
答案 0 :(得分:2)
大多数数据库都支持某种自动递增标识字段。此字段通常也设置为唯一,因此不会出现重复ID。
请参阅您的数据库文档,了解它是如何在您的数据库中完成的并使用它 - 当您已经有一个良好的机制时,不要重新发明轮子。
答案 1 :(得分:0)
您想要的是事务中的SELECT MAX(id)
或SELECT MAX(some_function(id))
。
正如Oded的回答所建议的那样,许多数据库都有自己的方法来提供更高效的序列,并且取决于DBMS可能支持非数字ID。
此外,您可以将ID分解为Y和00001作为单独的列,并使两列构成主键;然后大多数数据库都能提供序列。
然而,这会导致您的主键是否具有意义的问题; Y
表示密钥部分有一些含义(否则你会满足于普通的整数id)。