【问题标题】:Updating a row in Microsoft SQL Server在 Microsoft SQL Server 中更新一行
【发布时间】:2019-05-28 04:02:41
【问题描述】:

我需要更新数据库中的几行。但在更新值并确认值已更新后,它会恢复为原始值。

这是我写的脚本

BEGIN TRAN;

UPDATE cars
SET sold = sold + 5
WHERE id IN (18, 25);

COMMIT TRAN;

我成功运行了上述脚本,没有显示任何错误,并且显示更新了 2 行。我在汽车表上运行了SELECT,它显示已售出确实已更新。

之后,我打开了正在使用该数据库的系统(我的项目的自定义系统),以便在我的管理面板上查看它。但是,已售出的列未更新并显示旧值。当我在 cars 表上再次运行 SELECT 时,它会返回我的旧值而不是更新后的值。

我做错了吗?因为我在更新后运行了SELECT,它表明这些值确实更新了。

【问题讨论】:

  • 您是否 100% 确定您插入的数据库与您的应用运行时所针对的数据库相同?
  • 是的,我 100% 肯定。
  • 您的应用如何连接到数据库?它使用 EF 还是类似的?
  • 我建议运行 SQL Profiler 看看它是如何恢复的
  • 您能否向我们展示您正在使用的 SQL Server 的连接字符串?我几乎可以肯定你在某处有类似AttachDbFileName=...... 的东西......

标签: sql sql-server database database-connection database-administration


【解决方案1】:

开始尝试

开始传输; 更新汽车 SET 已售出 = 已售出 + 5 WHERE id IN (18, 25) and isnumeric(sold)=1

isnumeric fileters only numerics bcz 您尝试添加不符合转换问题的数值

提交翻译;

如果没问题就提交

结束尝试 开始抓

回滚

如果发生任何异常,则回滚事务。

结束捕获

【讨论】:

    【解决方案2】:

    另一个操作是再次更新表。使用 SQL SERVER PROFILER 并检查是否在 UPDATE 之后执行了其他事务。此外,在您的项目中通过发送正确的参数进行验证,以便返回您期望的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 2023-03-19
      相关资源
      最近更新 更多