查询更新主键列值

Posted

技术标签:

【中文标题】查询更新主键列值【英文标题】:Query to update primary key column values 【发布时间】:2016-07-15 12:46:27 【问题描述】:

我在DB2 中有一个数据库表,其中包含三个primary key 列,并且都是VARCHAR 类型。

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

    UPDATEWHERE 子句中使用旧主键列值查询

    DELETE 首先是旧记录(WHERE 子句中的旧主键列值),然后是 INSERT UI 中的所有数据作为新记录。

在 UI 中,必须提供 Primary Key Column 值(默认情况下 - 旧值),但用户将提供新值是可选的。

【问题讨论】:

无论你采取什么方法,确保你考虑到其他表有外键引用和重复记录。 我同意 Dan Bracuk,但如果您采用解决方案 2,请不要忘记在事务中执行此操作,如果删除工作但不插入您会丢失日期。使用事务,如果出现错误,您可以回滚。注意:对于使用事务,您的表必须已记录 最好使用单列代理键(序列/UUID)而不是复合业务键。当您不必担心更新其他表中的外键时,这将使更新变得更加简单。 【参考方案1】:

不要重新发明***。 update 语句可以正常工作。

【讨论】:

谢谢,我最近在两个应用程序中看到方法#2,所以我认为可能出于某种原因这样做,但不幸的是,这些团队中没有人澄清我,所以我在这里问。跨度>

以上是关于查询更新主键列值的主要内容,如果未能解决你的问题,请参考以下文章

sql优化

Mysql命令整理

多值主键对象的良好数据结构是啥?

如何在Django中加入非主键和外键列的查询

在查询中的复合外键/主键列上连接表

Oracle 从主键列中选择返回空值?