DB2在插入时覆盖自动生成的密钥

时间:2009-11-25 16:21:07

标签: database db2 identity

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

2 个答案:

答案 0 :(得分:4)

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

在DB2的CREATE TABLE语法中,查看语法图中与“标识列”相关的“generated-column-spec”。有两种方法可以指定如何生成标识值:

  • GENERATED ALWAYS:此选项将始终生成和标识值,并且您无法在插入语句中为标识列指定值
  • GENERATED BY DEFAULT:如果在insert语句中未指定列的值,则此选项将生成标识值。如果为insert语句中的列提供值,则db2将不会为其生成标识值。

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

答案 1 :(得分:3)

如果您尝试将数据加载到具有始终生成的标识列的表中,那么您可以执行此操作:

将db2从由identityoverride修改的ixf的tab43.ixf加载到tablename