怎么保证同个订单只插入一次

如何保证同个订单只插入一次
如果用if exits来判断

比如if not exits(select 1 from 表 where order=22)
然后再insert

但万一在并发情况下,判断出不存在,这样有可能会插入多条

我想到给order加个唯一索引,这样就不可能插入order一样的记录,但这样毕竟是靠出错来解决问题,可能会留下错误日志。如何有效解决这个问题。谢谢请给个思路也行
------解决思路----------------------
可以建立一个临时表, 先插入到临时表里面。 临时表里面已ID 为主键。然后从临时表到正式表在进行一次判定。没有就插入。有就不插入。或者跟新。
------解决思路----------------------
先把要插入的数据都存在临时表里,
插入时加where not exists(...)判断.
即使多进程并发执行也不会插入重复order值.

insert into 表([字段列表])
 select [字段列表]
 from [临时表] a
 where not exists(select 1 
                  from 表 b
                  where b.order=a.order)

------解决思路----------------------
既然order不重复或是不允许重复,就加个唯一约束呗!
------解决思路----------------------
你可以在插入时的where条件里面判断
------解决思路----------------------
在程序上用锁+单例执行也可以吧~