DB2在创建表上命名序列

  • 本文关键字:创建 DB2 sql db2 ddl
  • 更新时间 :
  • 英文 :


这似乎是一个毫无意义的问题,但我会问。

在创建DDL时,我想拥有所有的关系和"额外"信息,因此,当DB丢弃错误时,使用我的名字而不是某些自动生成的ID

这对我的关系和索引非常有用,但是我注意到DB2存储"序列",它只是命名它们...我似乎无法弄清楚如何在创建脚本中命名它们 - 创建后进入以找出什么是什么是选择。

示例

SEQUENCE MY_SCHEMA.SQL131021121240860 is what DB2 named it when I created

我想做的

CREATE SEQUENCE MY_SCHEMA.MY_TABLE_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 32767 0 0 CACHE 20;

我已经在创建表之前和之后尝试过此操作,但是这些序列总是使用'sql131021121240 ..'naming

这是我尝试过的两种方法。

-- BEFORE, as my ERD software does...
CREATE SEQUENCE MY_SCHEMA.TEST_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 32767 0 0 CACHE 20;
CREATE TABLE MY_SCHEMA.TEST (
  ID SMALLINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1, INCREMENT BY 1 ) NOT NULL,
  NAME VARCHAR( 255 ) NOT NULL,
  CONSTRAINT MY_SCHEMA_TEST_PK PRIMARY KEY ( ID )
) IN STORE16K;

-- AFTER, as it makes sense to me, that the table has to exist first
CREATE TABLE MY_SCHEMA.TEST2 (
  ID SMALLINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1, INCREMENT BY 1 ) NOT NULL,
  NAME VARCHAR( 255 ) NOT NULL,
  CONSTRAINT MY_SCHEMA_TEST2_PK PRIMARY KEY ( ID )
) IN STORE16K;
CREATE SEQUENCE MY_SCHEMA.TEST2_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1000 MAXVALUE 32767 0 0 CACHE 20;

在这两种情况下

可以做吗?有没有这样做的原因?

在进行更多阅读时,似乎我不了解序列,但是我认为我的问题仍然很重要。我仍然想命名他们。

我对序列在身份字段上自动创建的事实感到困惑 - 本文中的评论(DB2自动生成的列/生成的始终优点和序列上的利弊)使您似乎是/或命题使用"生成的身份"或"序列" - 但是,用单个列的创建表的行为确实可以创建序列……不仅如此,而且看起来好像是1:1-,这可能是身份,身份可能需要的而且很可能可以通过其他事物使用定义的序列。.我明白它们是"不绑定"到表的。

无论哪种方式 - 我如何命名它们的问题,而不是让DB名称这仍然是我的意思。

thx

正如您已经意识到的那样,DB2隐式为每个IDENTITY列创建一个序列,并且无法提供此类序列的名称。您拥有自定义名称的要求似乎是任意的。

最新更新