【问题标题】:Is there a way to auto increment a column with respect to the foreign key in DB2?有没有办法根据 DB2 中的外键自动增加列?
【发布时间】:2017-05-05 10:38:47
【问题描述】:

假设我有一个地址表,其中包含一家制造公司不同设施的地址。 外键让我知道地址属于哪个公司,但我需要一个代理 ID 来区分每个设施。此 id 应根据外键值自动增加。 注意:我只需要简单的整数值作为键。

例如:

我的表有以下列,ORGANIZATION_ID 是外键。 FACILITY_ID 是依赖于外键的第二个代理键。

     ADDRESS_TABLE
    ->ORGANIZATION_ID
    ->FACILITY_ID
    ->ADDRESS_LINE_1
    ->ADDRESS_LINE_2
    ->CITY
    ->STATE
    ->ZIP_CODE

我希望设施 ID 从 1 自动增加,具体取决于 组织编号。即

    ORGANIZATION_ID 1
    FACILITY_ID 1

当我为新组织插入数据时,设施应该从 1 开始

    ORGANIZATION_ID 2
    FACILITY_ID 1

下次我为同一组织插入数据时,我的设施 ID 应该相应增加 -

    ORGANIZATION_ID 1
    FACILITY_ID 2

有没有办法在 DB2 中实现这一点? 我目前使用的是 DB2 V 10.5.6

【问题讨论】:

  • @Esperento57 我再次更新了我的问题。我一直在紧张的日程安排之间发布此内容..抱歉出现错误..
  • 你为什么要这样做?只需在您的表 ADDRESS_TABLE 上创建一个列自动增量作为主键,您应该在所有表上都有主键。它足以保证单一性和完整性

标签: sql db2 auto-increment db2-luw surrogate-key


【解决方案1】:

没有。自动增量或 DB2 所称的身份键不支持复合键。

您能做的最好的事情是有一个插入触发器来处理分配您想要的值。可能使用SEQUENCE;尽管您必须为每个新组织的设施创建一个新序列。

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2012-02-12
    相关资源
    最近更新 更多