如何在 sql 中添加同时包含字符串和自动递增数字的 ID
how to add an ID with both string and auto incremented number in sql
我正在处理一个数据库项目,我被它的 ID 卡在这里了。基本上,ID由一个类型和一个数字组成,当我们向table中插入新数据时,它应该自动为数据分配一个新的ID,例如MS-1,MS-2,MS-3, DS-1、DS-2、PC-2、PC-3,我知道如何在 sql 中连接一个带有自动递增数字的字符串,但我不确定如何处理不同字符串的这个问题.在此先感谢您提供任何有用的建议!
这正是我的情况,我已经解决了,请参阅 问题中的答案。
我也试着系统的回答一下吧
create table my_seq(
min_value integer,
Max_value integer,
last_value integer,
increment_by tinyint,
type varchar)ENGINE = InnoDB;
然后创建数据值,例如,
insert into my_seq(min_value,max_value,last_value,increment_by,type)
values(1,99999999,1,1,'foo#','DS'),(1,999999999,1,1,'foo#','MS'),(1,999999999,1,1,'foo#','DOC');
确保你有 auto-commit=false
。
然后,在您的应用程序或数据库代码中这样做,
//very import to begin the transaction
begin;
select CONCAT(type_val,'-',last_value) from my_seq where type_val=? FOR UPDATE;
Read the result in App or database procedure/trigger
update my_seq set last_number=last_number+1 where type_val=?;
commit;
确保 type_val
上有 index
。
我相信这应该有效。
我正在处理一个数据库项目,我被它的 ID 卡在这里了。基本上,ID由一个类型和一个数字组成,当我们向table中插入新数据时,它应该自动为数据分配一个新的ID,例如MS-1,MS-2,MS-3, DS-1、DS-2、PC-2、PC-3,我知道如何在 sql 中连接一个带有自动递增数字的字符串,但我不确定如何处理不同字符串的这个问题.在此先感谢您提供任何有用的建议!
这正是我的情况,我已经解决了,请参阅
我也试着系统的回答一下吧
create table my_seq(
min_value integer,
Max_value integer,
last_value integer,
increment_by tinyint,
type varchar)ENGINE = InnoDB;
然后创建数据值,例如,
insert into my_seq(min_value,max_value,last_value,increment_by,type)
values(1,99999999,1,1,'foo#','DS'),(1,999999999,1,1,'foo#','MS'),(1,999999999,1,1,'foo#','DOC');
确保你有 auto-commit=false
。
然后,在您的应用程序或数据库代码中这样做,
//very import to begin the transaction
begin;
select CONCAT(type_val,'-',last_value) from my_seq where type_val=? FOR UPDATE;
Read the result in App or database procedure/trigger
update my_seq set last_number=last_number+1 where type_val=?;
commit;
确保 type_val
上有 index
。
我相信这应该有效。