作者:Cika_用假名说真话 | 来源:互联网 | 2023-05-19 08:59
两个人同时往表yf_table_wr里输入数据,想让字段diannaoID为唯一字段,作为区分各条记录的标志.我要这样做的:在新增单据时去查找当前表yf_table_wr中dianna
两个人同时往表yf_table_wr里输入数据,想让字段diannaoID为唯一字段,作为区分各条记录的标志.
我要这样做的:
在新增单据时去查找当前表yf_table_wr中diannaoid的最大值+1做为此次输入单据的电脑编号,结果发现张,王,两个人输入的单据中diannaoid字段有很多是重复的!我想是她们两人在输入单据时,取得的都是相同的最大diannaoid,(并且在数据库设计时没有把diannaoid设为主关键字段,导至在保存时也没有发现这个问题.)
想问一下,现在把相同字段都改成不同的之后,并把dannaoid设为主键.能杜绝两个人在输入单据时(不是在保存时)不取相同的diannaoid吗?
比如说,现在数据库中现有10第记录,张打开她的输入界面,界面上显示新增的单据的diannaoid为11,这时张没有做保存动作,王也打开输入界面,她的输入界面的dinaaoid应为12而不是11.如果简单的设一个主关键字段不能解决问题?如不能那么有什么好办法吗?
我想这是一个非常实际的问题.因为很多软件的单据再新增时都会自动取一个递增的编号如单据类型+日期+流水号,如果不解决这个问题,多人同时输入时肯定要出问题的. 不知大家在实际都是怎么做的!
5 个解决方案
对数据库更新之前再采番,同时锁定该表,待数据插入完毕解锁。
每做一张单把生成的最大编号写一个临时表,生成新编号都从临时表中取
我想到了自增字段值,当这样就不能事先看到将要存进diannaoid 的值了.