在创建人员时,系统会自动分配工号,工号从000开始一次增长到999 ;人员创建时,获取工号的做大值+1作为新工号存入数据库。但有两个人同时(精确到毫秒,都相同)创建人员时,取到的最大值都一样,导致两个人工号一致。求解决办法?
你就先插入数据库返回当前行ID
用当前行id-上一行id+上一行工号再赋值给工号字段
或者你加个锁.或者给工号列加个唯一索引.
表加锁,解决了。
设置唯一索引,如果重复了,提醒用户刷新后再试
1 guid
2 lock
SQL Server 跟 PGSQL 都有 Sequence 功能,用一个专门的 Sequence 来生成工号,然后在插入的时候使用 next_value_for
这样的东西来获取工号,这样应该就不会重复了。当然,给工号列设置唯一索引也是必须的。