高并发情况下怎么避免数据重复

数据库有一字段: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层加锁,保证重复的数据被加锁