2009-11-25 76 views
1

我想将一个项目插入到数据库中的表中。该表有一个自动生成的密钥。是否可以重写自动生成的键,(强制一个值)。如果是这样如何?插入时覆盖自动生成的密钥

回答

4

我打算假设你正在谈论身份列而不是序列。

在DB2的CREATE TABLE语法中,查看语法图中与身份列相关的“generated-column-spec”。有两种方法来指定标识值会产生:

  • 始终产生:此选项将始终生成与标识值,你不能在INSERT语句
  • GENERATED指定标识列的值BY DEFAULT:如果在插入语句中未指定列的值,则此选项将生成标识值。如果您在插入语句中为列提供值,则db2将不会为其生成标识值。

如果您尝试插入的表在创建表时使用了ALWAYS选项,那么您无法覆盖它。您需要删除并重新创建该表,或者使用ALTER TABLE语句重新定义列以仅在默认情况下生成标识值。

3

如果你想将数据加载到拥有它始终会生成那么你可以做到这一点的标识列的表:从IXF的tab43.ixf

DB2负荷由identityoverride修改成表名