【发布时间】:2016-07-15 12:46:27
【问题描述】:
我在DB2 中有一个数据库表,其中包含三个primary key 列,并且都是VARCHAR 类型。
现在,这些列值可通过应用程序 UI 中的屏幕进行编辑。我的问题是哪种方法更好,
-
UPDATE在WHERE子句中使用旧主键列值查询或
-
DELETE首先是旧记录(WHERE子句中的旧主键列值),然后是INSERTUI 中的所有数据作为新记录。
在 UI 中,必须提供 Primary Key Column 值(默认情况下 - 旧值),但用户将提供新值是可选的。
【问题讨论】:
-
无论你采取什么方法,确保你考虑到其他表有外键引用和重复记录。
-
我同意 Dan Bracuk,但如果您采用解决方案 2,请不要忘记在事务中执行此操作,如果删除工作但不插入您会丢失日期。使用事务,如果出现错误,您可以回滚。注意:对于使用事务,您的表必须已记录
-
最好使用单列代理键(序列/UUID)而不是复合业务键。当您不必担心更新其他表中的外键时,这将使更新变得更加简单。