我要客户端通过在一个dbgrid中,选择多条记录,然后批量提交到服务器上,服务器上的表的主键是逐条做+1操作的(这样做是不是增加了实现的困难,有朋友劝我用GUID或者自己做一个随机数做为主键,各位大虾的意见呢?)
我目前只能实现单用户的操作,基本原理是:在客户端,首先判断选中的记录是否是重复记录,接着ClientDataSet.Insert,然后在服务器端得到表中最后一条记录的主键,来生成新记录的主键(+1操作),同时加判断是提交一条还是提交多条记录,判断如果是多条,就要在新主键的基础上计算其它记录的主键,每次计算好主键就开始附值操作,然后post,最后通过一个按钮ApplyUpdates(0)。
目前存在的问题:1、感觉大部分操作都在客户端,很容易出错,而且也很繁琐。
2、对于多用户提交时就很容易出错了,因为如果前面要提交的记录还没有提交上去,而后面的人读得也是还没有更新的表的最后一条记录的主键,这样很容易出现主键重复的错误。
3、用ApplyUpdates是不是不安全呢?我在论坛上看到有人说商业最好别用,而是自己来写提交过程,那么怎么来实现呢?
大家看看我该怎么修改呢,这些错误该怎么避免呢?谢谢各位大虾,星星们都快来看看阿。
我目前只能实现单用户的操作,基本原理是:在客户端,首先判断选中的记录是否是重复记录,接着ClientDataSet.Insert,然后在服务器端得到表中最后一条记录的主键,来生成新记录的主键(+1操作),同时加判断是提交一条还是提交多条记录,判断如果是多条,就要在新主键的基础上计算其它记录的主键,每次计算好主键就开始附值操作,然后post,最后通过一个按钮ApplyUpdates(0)。
目前存在的问题:1、感觉大部分操作都在客户端,很容易出错,而且也很繁琐。
2、对于多用户提交时就很容易出错了,因为如果前面要提交的记录还没有提交上去,而后面的人读得也是还没有更新的表的最后一条记录的主键,这样很容易出现主键重复的错误。
3、用ApplyUpdates是不是不安全呢?我在论坛上看到有人说商业最好别用,而是自己来写提交过程,那么怎么来实现呢?
大家看看我该怎么修改呢,这些错误该怎么避免呢?谢谢各位大虾,星星们都快来看看阿。
2正如你所说的用GUID或者自己做一个随机数做为主键