数据库有一字段:orderNo,orderNo的规则:20170327000001、20170327000002依次往后累加。。。并发时怎么避免存入重复的
可以利用数据库表同步机制。
将orderNo的值存入一个表中,每次取的时候更新表让这个数字+1。
可以让orderNo的值从sequence中取得,在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,所以可以避免重复
再补充一下sequence的创建和用法:
create sequence S_orderNo
minvalue 1
maxvalue 999999999999999999999999999
start with 20170327000001
increment by 1
nocache;
可以看如下例子:
insert into S_Depart(departId,Departname,Departorder)values(S_orderNo.Nextval,'12345',1);
如果是单台应用服务器,可以考虑在controller层加锁,保证重复的数据被加锁