Вы должны определить свою таблицу как:
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;
То есть, делать вычисления на лету.Поддерживать значение второго ключа при наличии вставок, обновлений и удалений в таблице довольно громоздко.