Database 插入时DB2重写自动生成的密钥

Database 插入时DB2重写自动生成的密钥,database,db2,identity,Database,Db2,Identity,我想在数据库中的表中插入一个项。该表有一个自动生成的键。是否可以覆盖自动生成的关键点(强制值)。如果是这样的话,怎么办?我假设您谈论的是标识列,而不是序列 在DB2语法中,查看语法图中与标识列相关的“生成的列规范”。有两种方法可以指定如何生成标识值: 始终生成:此选项将始终生成和标识值,并且不能在insert语句中为标识列指定值 默认情况下生成:如果insert语句中未指定列的值,则此选项将生成标识值。如果在insert语句中为该列提供一个值,db2将不会为其生成标识值 如果要插入的表在创建

我想在数据库中的表中插入一个项。该表有一个自动生成的键。是否可以覆盖自动生成的关键点(强制值)。如果是这样的话,怎么办?

我假设您谈论的是标识列,而不是序列

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

  • 始终生成:此选项将始终生成和标识值,并且不能在insert语句中为标识列指定值
  • 默认情况下生成:如果insert语句中未指定列的值,则此选项将生成标识值。如果在insert语句中为该列提供一个值,db2将不会为其生成标识值

如果要插入的表在创建表时使用了“始终”选项,则无法覆盖该表。您需要删除并重新创建该表,或者使用该语句重新定义列,以仅在默认情况下生成标识值。

我假设您讨论的是标识列,而不是序列

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

  • 始终生成:此选项将始终生成和标识值,并且不能在insert语句中为标识列指定值
  • 默认情况下生成:如果insert语句中未指定列的值,则此选项将生成标识值。如果在insert语句中为该列提供一个值,db2将不会为其生成标识值

如果要插入的表在创建表时使用了“始终”选项,则无法覆盖该表。您需要删除并重新创建该表,或者使用该语句重新定义列,以仅在默认情况下生成标识值。

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


db2 load from tab43.ixf of ixf由identityoverride修改为tablename

如果您试图将数据加载到一个始终生成identity列的表中,则可以执行以下操作:

db2从ixf的tab43.ixf加载,由identityoverride修改为tablename