попробуй
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX( D_NIDMTR ) +1, 1000 FROM FR_METIERPUBLI
Однако .. будьте очень осторожны с этим .. если 2 операции делают это одновременно, вы получите дубликат
Вы можете сделать (по крайней мере на SQL Server) обернуть его в транзакцию и указать эти блокировки
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX( D_NIDMTR ) +1, 1000 FROM FR_METIERPUBLI with (UPDLOCK, HOLDLOCK)
Почему вы не используете последовательность или тождество?