如何在DB2中创建ROWID列?

如何在DB2中创建ROWID列?,db2,Db2,我试过: CREATE TABLE rowid_type ( col1 ROWID NOT NULL GENERATED ALWAYS, col2 int ); 错误: 错误:db2sql错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=generatedalways;col1 ROWID不为空;,驱动器=4.14.111 SQLState:42601 错误代码:-104 编辑 我将此链接转介至: 它表明: CREATE TABLE EMPLO

我试过:

  CREATE TABLE rowid_type
  (
  col1 ROWID NOT NULL GENERATED ALWAYS,
  col2 int
  );
错误:

错误:db2sql错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=generatedalways;col1 ROWID不为空;,驱动器=4.14.111

SQLState:42601

错误代码:-104

编辑 我将此链接转介至:

它表明:

CREATE TABLE EMPLOYEE
  (EMP_ROWID   ROWID NOT NULL GENERATED ALWAYS,
   EMPNO       SMALLINT,
   NAME        CHAR(30),
   SALARY      DECIMAL(7,2),
   WORKDEPT    SMALLINT);
编辑2
  • 产品名称:DB2/LINUX8664
  • 版本:10.5.0.5
[我的答案适用于DB2LUW,问题已经更新,现在指向DB2forz/OS]

试着这样做:

CREATE TABLE rowid_type
(
  col1 int NOT NULL GENERATED ALWAYS AS IDENTITY,
  col2 int
);

还有几个选项可用,如设置开始和停止值。有关详细信息,请参阅。

我希望
始终作为标识生成?您添加的链接是针对DB2forz/OS的,错误可能来自DB2LUW这里有一些严重的警告限制了
ROWID
类型(在文档中提到)的有用性。特别是,由于该值可以在reorg上重新分配,因此只有当您有一个索引的唯一键开始时,它才真正有用……我现在感到困惑。ROWID是一种数据类型吗?取决于您的DB2版本、平台和配置。大多数用户使用INT或其他数字类型,然后生成标识。您使用的是z/OS、LUW还是i?产品名称:DB2/LINUXX8664,版本:10.5.0.5所以您使用的是DB2LUW,但您阅读或链接的文档是针对另一个产品的,DB2forz/OS。我建议使用回答中显示的
INT
数据类型,因为DB2LUW没有ROWID类型。很抱歉给你带来了困惑。