UPDATE有时不成功

jronald 2007-12-19 11:45:07
从原始表生成临时表,用UPDATE更新之,有时不成功,这时把没有功更的新临时表删掉,用同样的方法重新生成,却可以,这是为什么?
(逻辑非常简单,会不会是同步问题,要怎么解决)
下面是部分代码,其是ma12,ma26也是临时表中的数据,是前面刚刚更新过的

for (UINT i=start;i<CntTotalGrp;++i) {
SqlCmd.Format("UPDATE %s SET a="
"(SELECT TOP 1 ma12 FROM %s WHERE ID=%u)"
"-(SELECT TOP 1 ma26 FROM %s WHERE ID=%u)"
"WHERE ID=%u",
TmpTblName,TmpTblName,i-2,TmpTblName,i,i);
m_pConn->Execute(_bstr_t(SqlCmd),NULL,adCmdText);
}
...全文
176 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rouqu 2007-12-19
  • 打赏
  • 举报
回复
如果已经提交语句且执行完毕,你就可以认为他们已经写到数据库里

update对语句加排他锁 要不blocking状态等待获取该锁(这时也可被他读) 要不直接获取该锁后执行更新再释放(再次读取为更新数据)
jronald 2007-12-19
  • 打赏
  • 举报
回复
表名不带# 或 ## , 功能上和普通表一样

功能上非常简单,一条线下来的,不会有问题,

如果是ma12 ma26提交问题的话,怎么保证在用到ma12 ma26时保证他们已经写到数据库里了?
rouqu 2007-12-19
  • 打赏
  • 举报
回复
看你的操作是对该表ma26、ma12两字段做差值再更新到a

如果要保存这种变化 就不必用临时表了
Haten 2007-12-19
  • 打赏
  • 举报
回复
将SQL语句在查询分析器中执行看看是否报错。
rouqu 2007-12-19
  • 打赏
  • 举报
回复
你这个临时表是定义的表变量还是#表or##表? 这三种都不能永久保存
dawugui 2007-12-19
  • 打赏
  • 举报
回复
如果不是临时表,数据不准确的话
只有两个可能,
1,数据没提交成功.
2.SQL语句不正确,比如条件是否考虑周全.
junshanhudazhaxi 2007-12-19
  • 打赏
  • 举报
回复
顶一下
jronald 2007-12-19
  • 打赏
  • 举报
回复
这个临时表是相对于应用程序来说的,性质上和普通的表一样,永久保存,名字固定
dawugui 2007-12-19
  • 打赏
  • 举报
回复
从原始表生成临时表

不用临时表.临时表不固定,每次都不同.

要用一个临时使用的表或称固定表,用完后删除.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧