当前位置: 首页 > 面试题库 >

如果不同/更改则更新

姚新霁
2023-03-14
问题内容

是否可以在sql中执行更新语句,但仅在更新不同时才执行更新?

例如

如果在数据库中, col1 = "hello"

update table1 set col1 = 'hello'

不应 执行任何类型的更新

但是,如果

update table1 set col1 = "bye"

应该 执行更新。


问题答案:

使用更新前触发器可以做到这一点。在此触发器中,您可以将旧值与新值进行比较,并在新值不变的情况下取消更新。但这将导致呼叫者网站上的错误。
我不知道为什么要这样做,但是这里有几种可能性:

  1. 性能:这里没有性能提升,因为更新不仅需要找到正确的行,而且还需要比较数据
  2. 触发器:如果仅在发生真正更改时才触发触发器,则需要像这样实现触发器,以便在执行任何操作之前将所有旧值与新值进行比较。


 类似资料:
  • 我想使用JavaFX ListView控件显示一个人员列表(在POJOS中编码,包含一个name和surname属性)。我创建了ListView,并将persons列表添加为ObservableList。如果我在ObservableList中删除或添加一个新人,那么一切都可以正常工作,但是POJO中的更改不会触发ListView的更新。我必须从ObservableList中移除和添加修改后的POJ

  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 以下是我需要更改的一些值: 如果第一列是2= 如果第一列是8= 如果第一列是16= 然而,这个命令并不方便,因为它改变了缩进,并且带有8的行似乎不适合: 输出: 您将如何更正更通用的内容(这意味着即使特定行的缩进不同,它也可以工作),并且不会改变原始文件的缩进?

  • 我有一个JSF2.2应用程序,用户必须在 才是问题所在。 此外,转换器(如评论中建议的或已删除的答案)也无法保存我的一天。用户输入正确转换,我需要BidDecimal,包括我的应用程序中的精确比例。任何返回BigDecimal的转换器都不会改变观察到的行为。 围绕BigDecimal的包装类可能会解决我的问题,但不是我认为的干净的解决方案。我真的很想知道为什么UIInput会这样。

  • 我想跟踪表上的更改,并在发生 UPDATE 后将它们存储在相应的历史记录表中(如果至少有一个字段已更改)。 我有以下表格: tbl员工 tbl_employees_history 作用 触发 到目前为止一切都很好,这件事很管用。但我想知道我是否有一个有15列的表,如果其中一列发生了更改,我想保存一个历史记录。我必须对每个字段重复IF语句吗?还是有某种技巧可以检查每个列?这样,我就可以在表中添加一列

  • 问题内容: 如果存在,它就可以工作,但是如果不存在,我想将此数据作为新行插入。 更新 datenum是唯一的,但这不是主键 问题答案: Jai是正确的,您应该使用。 请注意,由于它是唯一键,因此不需要在update子句中包含datenum,因此它不应更改。您确实需要包括表中的所有其他列。您可以使用该函数来确保在更新其他列时使用正确的值。 这是使用适用于MySQL 的正确语法重写的更新: