![]() |
1
9
检查代码中的新旧数据,而不是在查询中进行检查。 如果数据根本没有改变,就不需要不必要地打扰数据库层。
|
![]() |
2
2
一种方法是启动事务,选择行的内容,并将其与要更新的内容进行比较。如果它们不匹配,则执行更新并结束事务。如果它们匹配,则回滚事务。 |
![]() |
3
2
听起来您正在浏览一个表并修改一些行,然后您希望再次浏览该表并更新刚刚更改的行的时间戳。
或者对所有行都发出update语句,但对于大多数行,它只是将其设置为已有的值?不要那样做。排除那些不会在where子句中修改的行:
|
![]() |
4
1
如果您想先发制人地执行此操作,我能想到的唯一方法是修改update语句的WHERE子句,以比较现有值和新值(对于每个值)。如果 任何 |
![]() |
5
1
|
![]() |
6
1
这取决于您是否控制数据。Seb上面的说法是正确的,在进行更新之前,您应该对照新数据检查旧数据。但是如果数据不在您的控制之下呢? 假设您是一个被要求进行更新的Web服务。然后检查的唯一方法是查询现有数据并将其与新数据进行比较。 不知道有任何SQL功能可以检测更新是否实际更改了任何数据。 SQL中有很多方法可以检测update语句中包含了多少行。我不知道如何检测update语句是否确实更改了任何数据,知道这一点很有意思。 |
![]() |
7
1
如果您使用的是sql 2005/2008,则可以在存储过程中执行以下操作。
然后,您可以从@TENTABLE中进行选择,以验证prevReadKey和readKey是否具有相似的值。如果两者具有相似的值,您可以重置上次修改的日期时间。 这样,当一个值实际发生变化时,您就不必对表发出多个查询。但是,如果值不变,则会触发两个update语句,其中不需要任何update语句。如果这些病例很少见,这应该没问题。 |
![]() |
8
0
从机器的角度来看,它不是特别有效,但是您可以编写一次,并且无论哪个应用程序、存储过程或其他进程试图更新记录,它都可以处理这种情况。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |