Foxtable(狐表)用户栏目专家坐堂 → 利用下拉窗口进行赋值,该怎么改成事务的方式处理啊?


  共有3416人关注过本帖树形打印复制链接

主题:利用下拉窗口进行赋值,该怎么改成事务的方式处理啊?

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/10 10:52:00 [显示全部帖子]

dim c2 as string = "某值"
dim str as string = "INSERT INTO 表A (列1, 列2) SELECT 列1, '" & c2 & "' FROM 表B;

 回到顶部
帅哥,在线噢!
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 13:54:00 [显示全部帖子]

事务操作就会产生锁,不然就不叫事务了。所以事务尽量快速处理完毕。并且尽量避免同时并发操作同一行数据。

想上面这种update语句涉及到的所有行,如果事务没有结束之前,其它人也更新这些行就肯定只能等待,无法进行更新操作,等不及超时就会有这种错误了

 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 14:22:00 [显示全部帖子]

都说了只要是事务操作就会产生锁,事务结束才会解锁。一般事务不会影响select的操作,只会影响更新操作。

至于是不是会update同一行数据,不取决于开发人员认为会不会,而是看用户做了什么操作。

 回到顶部
帅哥,在线噢!
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 15:00:00 [显示全部帖子]

没有办法判断。所以,尽可能减短事务内部操作的时间。

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 15:49:00 [显示全部帖子]

看看这个。http://www.foxtable.com/webhelp/topics/3007.htm

要在事务开始前更新这个标记

 回到顶部
帅哥,在线噢!
有点蓝
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 16:50:00 [显示全部帖子]

就按您说的做就行了。添加一个列,执行真正事务前,先访问内和更新这个列咯

 回到顶部
帅哥,在线噢!
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 17:20:00 [显示全部帖子]

首先,表不存在什么所谓的公共属性。其次,如果需要一次性锁定十几万行,那么这种业务就不适合多人并发使用。如果只是在十几万行查询更新几行的状态,不存在什么效率问题。
[此贴子已经被作者于2019/9/11 17:20:06编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/12 8:35:00 [显示全部帖子]

比如有一个标记列,默认没有值,那么在进行update前,查询这一行标记列如果没有值,说明没有人在操作,那么就把这一行标记列更新为1,然后开始进行update等事务操作,事务最后结束前把这一行标记列再清空,然后结束事务。

如果查询这一行标记列有值,说明有其它人在操作,就提示稍候再重试

 回到顶部
帅哥,在线噢!
有点蓝
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/16 10:38:00 [显示全部帖子]

勾选“显示详细信息”,贴出相关完整代码看看

 回到顶部
总数 20 上一页 1 2