Sql 用于更新主键列值的查询

Sql 用于更新主键列值的查询,sql,jdbc,db2,Sql,Jdbc,Db2,我在DB2中有一个数据库表,它有三个主键列,所有列的类型都是-VARCHAR 现在,这些列值可以通过应用程序UI中的屏幕进行编辑。我的问题是哪种方法更好 UPDATE使用WHERE子句中的旧主键列值进行查询 或 首先删除旧记录(在WHERE子句中使用旧主键列值),然后插入UI中的所有数据作为新记录 在UI中,必须提供主键列值(默认情况下为旧值),但用户提供新值是可选的。不要重新发明轮子。update语句可以很好地工作。无论您采取何种方法,请确保您考虑到其他具有外键引用和重复记录的表。我同意D

我在
DB2
中有一个数据库表,它有三个
主键
列,所有列的类型都是-
VARCHAR

现在,这些列值可以通过应用程序UI中的屏幕进行编辑。我的问题是哪种方法更好

  • UPDATE
    使用
    WHERE
    子句中的旧主键列值进行查询

  • 首先删除
    旧记录(在
    WHERE
    子句中使用旧主键列值),然后
    插入
    UI中的所有数据作为新记录


  • 在UI中,必须提供
    主键列
    值(默认情况下为旧值),但用户提供新值是可选的。

    不要重新发明轮子。
    update
    语句可以很好地工作。

    无论您采取何种方法,请确保您考虑到其他具有外键引用和重复记录的表。我同意Dan Bracuk的说法,但如果您采用解决方案2,请不要忘记在事务中执行此操作,如果删除工作但不插入,则会丢失日期。使用事务,您可以在出现错误时回滚。注意:要使用事务,表必须具有JournalizeEdit,最好使用单列代理键(sequence/UUID),而不是复合业务键。当您不必担心更新其他表中的外键时,这将使更新更加简单。谢谢,我最近看到两个应用程序采用了方法2,因此我认为出于某种原因可能会这样做,但不幸的是,这些团队中没有人向我澄清,所以我在这里询问。