Você deseja usar uma sequência .
Duas ressalvas:
-
OAUTO_INCREMENTrecurso descrito no artigo não é padrão e pode causar problemas de portabilidade ao mover para um banco de dados diferente.
-
Se umINSERTé abortado, um número da sequência ainda é consumido, então você pode acabar com falhas na sequência. Se isso for inaceitável, use uma sequência gerada automaticamente para a chave primária (substituta) e adicione um mapa separado dessa chave ao número de sequência "oficial", reforçando a exclusividade no índice dessa tabela.
A alternativa é aplicar
UNIQUE ness no banco de dados, use um TRANSACTION ISOLATION LEVEL apropriado e adicione a lógica do aplicativo para lidar com a falha de INSERT .