如何保持UpdateCommand语句中的转换字段不被同一UpdateCommand语句覆盖?

时间:2014-01-28 21:17:23

标签: asp.net sql sql-server gridview sql-server-2012

我正在创建一个报告,计算一周内记录更新的次数。

听起来很简单,对吧?让我对这一挑战投入一些复杂性。

我面临的挑战是我正在使用的日期范围取决于另一个字段,如果更新,它将使日期范围字段完全抛出报告。我将尝试通过以下示例尽可能简化:

所以我有一张桌子

book.book_keeping_2014

在此表中有以下列:

record_number - Automatically generated by a SEQUENCE command
amount
record_name
record_updated

数据库中的记录已经存在,理想情况下只需更新一次。

记录名称具有特定格式,其中日期早于其余文件信息。示例文件名为:

20140106-blah-blah-blah-blah.txt

所以这就是我为UpdateCommand定义的内容:

UPDATE book.book_keeping_2014 SET [amount] = @amount, 
record_name = @record_name, record_updated = LEFT(record_name,8)  
WHERE [record_number] = @record_number

所以这个条目在record_name字段中 -

20140106-blah-blah-blah-blah(etc).txt

将输入record_updated字段:

20140106

目前代码运行正常。但是,可能存在需要更新record_name列中给定单元格的奇怪时间。根据上面的UpdateCommand,如果record_name字段得到更新,那么record_updated字段也将更新。

我面临的挑战是,如果我在1月的第一周创建每周报告,然后我在1月的第4周更新了记录,这将会丢掉一份报告。月报也是如此。

我的问题是如何防止/重新编写我的Update语句,以便当LEFT命令在第一次不会被覆盖时提取正确的信息?

我对日期转换方案也有类似的挑战,但我可能只是把它放在一个不同的问题上。

1 个答案:

答案 0 :(得分:1)

如果您可以更改表的结构,则可以为HasUpdated添加标志。然后在您的查询中,仅更新HasUpdated = 0的行。