Как автоматически увеличить поле с первым номером, доступным в таблице с несколькими первичными ключами - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно увеличить вторичное поле в базе данных, но когда меняется самый левый первичный ключ, мне нужно, чтобы это поле снова запустилось в 1.

Я использовал autoIncrement, но когда левая клавиша меняется, число продолжает расти

Пример:

    Table
    key1, key 2 
    1     1
    1     2
    1     3
    1     4
    2     1
    2     2
    1     5
    2     3
    2     4

Я просто хочу знать, есть ли способ сделать это напрямую в SQL при создании поля или мне нужно каждый раз запускать предыдущий запрос, чтобы узнать, что такое max (ключ 2) ....

спасибо за помощь

1 Ответ

0 голосов
/ 22 мая 2019

Вы должны определить свою таблицу как:

create table examples (
    example_id int auto_increment primary key,  -- or identity, or generated always as, or serial depending on your database
    key1 int
);

Затем вы можете создать представление, которое делает то, что вы хотите:

create view v_example as
   select e.*, row_number() over (partition by key1 order by example_id) as key2
   from examples e;

То есть, делать вычисления на лету.Поддерживать значение второго ключа при наличии вставок, обновлений и удалений в таблице довольно громоздко.

...