Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何防止UpdateCommand语句中的转换字段被同一UpdateCommand语句覆盖?_Asp.net_Sql_Sql Server_Gridview_Sql Server 2012 - Fatal编程技术网

Asp.net 如何防止UpdateCommand语句中的转换字段被同一UpdateCommand语句覆盖?

Asp.net 如何防止UpdateCommand语句中的转换字段被同一UpdateCommand语句覆盖?,asp.net,sql,sql-server,gridview,sql-server-2012,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_

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

听起来很简单,对吧?让我在这个挑战中加入一些复杂性

我面临的挑战是,我使用的日期范围依赖于另一个字段,如果该字段得到更新,它将更新日期范围字段,从而完全取消报告。我将通过下面的示例尽可能简单:

所以我有一张桌子

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
因此,记录名称字段中的该条目-

20140106-blah-blah-blah-blah(etc).txt
将作为以下内容输入记录更新字段:

20140106
目前,代码运行良好。但是,可能会出现奇数时间,记录名称列中的给定单元格需要更新。根据上面的UpdateCommand,如果record_name字段更新,record_updated字段也会更新

我面临的挑战是,如果我为1月的第一周创建一份周报,然后在1月的第4周更新记录,那么这将导致一份报告。月报也是如此

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


对于日期转换场景,我也有类似的挑战,但我可以将其放在另一个问题中。

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

您的意思是添加一个名为“HasUpdated”的列,还是这是一个系统设置?向表中添加一个位列。它可以由一个触发器来维护,该触发器将在更新该行时将该列更改为1,或者在
UPDATE
语句中对其进行管理。