2016-12-20 1 views
0

Скажем, у меня есть адресная таблица с адресами разных объектов производственной компании. Иностранный ключ позволяет мне узнать, к какой компании принадлежат адреса, но мне нужен суррогатный идентификатор, чтобы различать каждый объект. Этот идентификатор должен автоматически увеличиваться в зависимости от значения внешнего ключа. Примечание: мне просто нужны простые целочисленные значения для ключей.Есть ли способ автоматического увеличения столбца относительно внешнего ключа в DB2?

например:

Моя таблица содержит следующие столбцы, ORGANIZATION_ID является внешним ключом. FACILITY_ID - это второй суррогатный ключ, зависящий от внешнего ключа.

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

Я хочу, чтобы объект идентификатор автоматически увеличится с 1 в зависимости от организации ид. т.е.

ORGANIZATION_ID 1 
    FACILITY_ID 1 

Когда я ввожу данные для новой организации, объект должен начать с 1

ORGANIZATION_ID 2 
    FACILITY_ID 1 

В следующий раз я вставить данные для одной и той же организации, мой объект идентификатор должен увеличиваться соответственно -

ORGANIZATION_ID 1 
    FACILITY_ID 2 

Есть ли способ сделать это в DB2? В настоящее время я нахожусь в DB2 V 10.5.6

+0

@ Esperento57 Я обновил свой вопрос еще раз. Я размещал это между моим жестким графиком. Извините за ошибки. – Ash

+1

Зачем вам это делать? Просто создайте автоинкремент столбца на вашей таблице ADDRESS_TABLE в качестве первичного ключа, у вас должен быть первичный ключ на всех ваших таблицах. Его достаточно для единства и целостности – Esperento57

ответ

1

Нет. Автоинкремент или ключи идентификации, когда DB2 их вызывает, не поддерживают составные клавиши.

Лучше всего было бы иметь триггер включения, который обрабатывал бы присвоение значений, которые вы хотите. Возможно использование SEQUENCE; хотя вам придется создать новую последовательность для использования в каждой новой организации.

Смежные вопросы