【问题标题】:SQL Server update query not working, however, SQL says the rows were affectedSQL Server 更新查询不起作用,但是,SQL 表示行受到影响
【发布时间】:2014-03-22 03:28:27
【问题描述】:

我有一个 SQL Server 2000 数据库,其中包含一个名为 Voters 的表。表中的一列(varchar(10) 类型的PrecinctCode)应该有一个类似于A111D109 的4 位代码,但有些行的值是'999'。值为'999' 的行在不同的列中具有正确的编号(FaultCode 类型为varchar(50))。当PrecinctCode = 999 时,我想将FaultCode 中的值复制到PrecinctCode

我运行了这个查询

UPDATE Voters
SET PrecinctCode = FaultCode
WHERE (PrecinctCode = '999')

会出现一条消息,显示“3031 行受影响”,但受影响的行仍会在 PrecinctCode 列中显示 999。我使用管理员帐户下的 Windows 身份验证连接到数据库,所以我认为这不是安全问题。

有没有人有一个不会更新行的更新查询?

编辑

我尝试了这个查询来检索架构,但它没有给我任何有用的信息。

SELECT  *
FROM    INFORMATION_SCHEMA.TABLES
where   TABLE_NAME like '%Voters%'

只发布表格设计工作吗?如果不能,你能告诉我运行一个查询来检索你需要的信息吗?谢谢。

【问题讨论】:

  • 你在哪里运行这个?如果它在事务中,是否正在提交事务?
  • 尝试在查询分析器的 SQL 中直接运行它。
  • 应该可以。您可以发布此表的架构吗?
  • 您是否连接到正确的数据库?
  • 是的,这个站点只有 1 个数据库。

标签: sql sql-server tsql sql-server-2000


【解决方案1】:

尝试先做一个 SELECT,这样你就可以确定你要的是什么:

SELECT FaultCode, PrecinctCode FROM Voters WHERE PrecinctCode = '999';

注意如果 FaultCode 的长度超过 10 个字符,您的 UPDATE 将失败。

【讨论】:

    【解决方案2】:

    如果你想笑,请试试这个

    UPDATE Voters
    SET PrecinctCode = FaultCode
    WHERE PrecinctCode = '999' and FaultCode <> '999'
    

    或者试试

    UPDATE Voters
    SET PrecinctCode = RTRIM (FaultCode)
    WHERE PrecinctCode = '999' 
    

    select *, len(FaultCode)
    from Voters
    WHERE PrecinctCode = '999' 
      and PrecinctCode <> FaultCode
    

    【讨论】:

      【解决方案3】:

      也许你应该在更新后尝试提交

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 2021-04-29
        相关资源
        最近更新 更多