如何在SQL中同时添加字符串和自动递增编号的ID

时间:2018-06-21 15:52:43

标签: mysql sql primary-key auto-increment

我正在处理一个数据库项目,并且它的ID被卡在这里。基本上,ID由类型和数字组成,当我们在表格中插入新数据时,它应该自动为数据分配一个新ID,例如MS-1,MS-2,MS-3,DS-1, DS-2,PC-2,PC-3,我知道如何在sql中使用自动递增编号连接字符串,而我不确定如何使用不同的字符串处理此问题。预先感谢您的任何有用建议!

1 个答案:

答案 0 :(得分:0)

这正是我的情况,并且已经解决,请在similar问题中看到我的回答。

让我也尝试系统地回答它。

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;

确保index上有type_val

我相信这应该可行。