【问题标题】:Best solution for modifying a key in a record while selecting on it在选择记录时修改记录中的键的最佳解决方案
【发布时间】:2010-09-16 06:27:24
【问题描述】:

我有一个 UPDATE sql 命令可以修改特定表中的日期/时间字段。该表有两个键,ProductionCode 和 TestTime,这是正在修改的内容。特定记录的生产代码永远不会更改,但用户通常会发现他们输入了错误的测试时间并需要更改它。

我有可以从数据网格中检索到的更新时间,但是,我需要选择正确的记录进行更改。为此,我的 where 条件之一必须是该记录在数据库中设置的当前时间。

目前,我保留了一组旧时间,每当运行 UPDATE 命令时都会更新这些时间。所以在 sql 命令的 WHERE 块中,使用的是旧时间。一旦它在数据库中更新,然后我更新时间数组。当时间输入无序时,或者当数据网格在与时间不同的字段上排序时,就会出现困难。我必须跟踪所有旧时间对应于数据网格行的顺序,并且它在过去导致了许多错误。目前它工作得很好,但它充其量是微妙的。

所以我真正在寻找的是更好的解决方案。我应该只存储用于填充 UI 的 SELECT 语句的结果并依赖它们吗?目前,我的数据库结果的唯一位置是直接进入数据网格。还是有其他方法?我避免了自动数据绑定,而是手动使用 SQL 命令,因为我的数据网格是动态配置的,并且从一次加载到下一次加载使用不同的模式,并且唯一保证存在的列是 ProductionCode 和 TestTime。

【问题讨论】:

    标签: sql database


    【解决方案1】:

    添加一个新列“id”,其中包含一个可以识别每一行的唯一编号。如果您的用户需要修改主键,您可能没有选择好的主键?

    【讨论】:

    • 这就是我需要做的。我最初并没有打算让时代变得多变。谢谢。
    【解决方案2】:

    我不知道您使用的是哪种语言,但您提到“datagrid”的方式让我觉得是 .NET 语言。

    数据网格(和网格视图等)具有允许您设置要引用的键的属性。为您的主键创建一个自动编号索引,并使用它来引用要更新的正确记录。

    密钥应该是只读的,句号。

    希望添加这个新字段不会干扰您的代码,但它可能会。但这是处理数据结构的正确方法。

    此外,根据您的 SQL 风格,您可能能够在您的选择中生成一个行号。这可能会引导您找到一个可行的解决方案,但这不是正确的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      相关资源
      最近更新 更多