Sql Oracle更新查询将两个值中的一个值设置为true,即使传递了false也是如此

Sql Oracle更新查询将两个值中的一个值设置为true,即使传递了false也是如此,sql,oracle,Sql,Oracle,我有以下Oracle更新查询来设置计数和事件命中率 update iam_counts set count = count + 1, event_hit = :eventHit where row_id = :rowId 计数是数字类型,事件命中是字符类型(T或F) 此查询可以从两个方法交替调用。方法1的事件命中率为false,方法2的事件命中率为true 在这两种情况下,计数都应该更新,对于事件命中,它应该设置为true,如下所示 方法1调用-false 方法2调用-tru

我有以下Oracle更新查询来设置计数和事件命中率

update iam_counts
     set count = count + 1, event_hit = :eventHit
   where row_id = :rowId
计数是数字类型,事件命中是字符类型(T或F)

此查询可以从两个方法交替调用。方法1的事件命中率为false,方法2的事件命中率为true

在这两种情况下,计数都应该更新,对于事件命中,它应该设置为true,如下所示

  • 方法1调用-false
  • 方法2调用-true
  • 方法1调用-true-->即使事件命中为false,也应将其设置为true

是否有像检查或查询这样的功能来实现它。

您是否正在寻找这样的功能:

update iam_counts
set count = count + 1, 
event_hit = decode(event_hit, 'T', 'T', :eventHit)
where row_id = :rowId

如果为假,则会更新事件,如果为真,则会保持不变。

我不理解这个问题。设置为真的条件是什么?还是要将其设置为始终为真?那么参数:eventHit做什么呢?从方法1,eventHit将始终为false,从方法2,它将为true。例如,如果先调用方法1,则计数将为1,事件命中率将为false,然后方法2,计数将为2,事件命中率将为true,然后如果再次调用方法1,则事件命中率将为false,但不应更新false。。。相反,它应该是真实的,因为它在db中。。。。。。。。。。所以这并不总是正确的。但一旦设置为true,则不应再次将其设置为false,即使呼叫来自emthod 1。您是否希望事件\u hit在设置为true后保持为true,无论之后发生什么情况?@MartinK。如果它在DB中设置为true,并且不使用false再次更新,那么就可以了。。。这是我的期望。但是如果调用方法1并执行查询,当前逻辑会将其更新回false。我不确定您想要实现什么。一方面,你说“如果它在DB中设置为true,并且不使用false再次更新”,但另一方面,你不希望你的更新做它应该做的事情。太好了。。。回答正确。我在找这个。。。谢谢