楼主:
Label (Panel)
2019-05-08 01:28:01※ 引述《a88241050 (再回头已是百残身)》之铭言:
: 是这样的
: 最近工作上需要写一支程式写资料进数据库
: 并产生流水号当key值写进字段中
: 我的想法很单纯
: 就是直接抓数据库资料笔数
: 然后拿笔数+1当新增的流水号
: 写完后交给SA测试
: 结果他一测马上就出问题了
: 后来我才知道 原来流水号是要抓最大值+1
: 而不是一直照顺序编下去
: 因为这个我被SA当的体无完肤
: 请问这个是很基本的观念吗?
auto increment 遇到以下情境会有跳号等问题
1. 同table多种序号应用
2. 不预期的增删
3. 定期重置,例如每个月要重新由1开始滚动
有一种方式是将流水号另存一专存序号的table
由专门的取号程式来存取
例如
作者: ashlikewing 2019-05-08 02:03:00
我会推荐用 function ROW_NUMBER()
作者: sextitanic 2019-05-08 09:57:00
或是 transaction + for update
作者:
bill0205 (善良的小孩没人爱)
2019-05-08 10:07:00之前有个前辈使用适用insert某张表 然后取得insert id当作流水序号 不知道这样做法如何
sqlserver有内建的方法,字段可以设定识别key想要手动控制,是有很多方式,只是要规范清楚
以稽核角度来看 设auto increment还发生跳号代表有人动过资料表
作者:
jack0204 (Jarbar王朝)
2019-05-08 21:33:00transaction失败也会跳号吧
作者: lwtech 2019-05-08 21:50:00
作者:
MangoTW (不在线上)
2019-05-09 09:56:00SQL 取号又不保证插入成功 正常情况也会跳号
作者:
pttrAin (rAin)
2019-05-10 20:56:00推推