2016-07-15 54 views
1

我有一个数据库表DB2其中有三个primary key列,所有类型 - VARCHAR查询更新主键列值

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

  1. UPDATE查询与旧的主键列值

    OR

  2. DELETE老唱片第一个(在WHERE旧的主键列值子句),然后将所有来自UI的数据作为新记录。

在UI,其强制提供Primary Key Column值(默认 - 旧值),但其可选的用户提供新的价值。

+1

无论采取什么方法,都要确保您考虑其他具有外键引用和重复记录的表。 –

+1

我同意丹布拉库克,但如果你采取的解决方案2不要忘记这样做成交易,如果删除工作,但不插入你失去你的日期。通过事务,如果错误可以回滚。注意:对于使用事务,您的表必须有日记 – Esperento57

+1

最好使用单列代理键(序列/ UUID)而不是组合业务密钥。当您不必担心更新其他表中的外键时,这会使更新更加简单。 –

回答

2

不要重新发明轮子。 update声明将工作得很好。

+0

谢谢,最近我看到了方法2在两个应用程序中被采用,所以我认为这可能是由于某种原因而完成的,但不幸的是,这些团队没有任何身体来澄清我,所以我在这里问了一下。 –