В T-SQL (MS SQL Server) используется свойство IDENTITY :
" ИДЕНТИЧНОСТЬ [( семя, приращение )]
seed Это значение, которое используется для самой первой строки, загруженной в таблицу.
приращение Это инкрементное значение, которое добавляется к значению идентификатора предыдущей строки, которая была загружена. "
Одна вещь, которую вы действительно не должны делать, это пытаться бросить свою собственную, если вы действительно не знаете, что делаете, и не можете справиться с параллелизмом и т. Д.
Редактировать: почему вы должны быть осторожны:
Вот некоторые псевдо-SQL, которые показывают опасность использования вашего собственного приращения и т. Д .:
1. @NextID = SELECT MAX(ID) FROM MyTable;
2. INSERT INTO MyTable(ID + 1, Name) VALUES (@NextID, "Dan");
Теперь в большинстве случаев это будет работать нормально. Однако в большой базе данных всегда есть вероятность, что между шагами 1 и 2 может произойти другой оператор вставки. В результате вы получите нарушение первичного ключа и ошибку. Это может случаться не часто, но когда это произойдет, будет очень сложно точно определить.
Чтобы обойти это, нужно иметь LOCK до шага 1 и освобождать его после шага 2. Это эффективно ставит в очередь все транзакции, и база данных работает в режиме «одного пользователя». В системах с большим объемом это может быть очень вредно для производительности.
Вот почему все основные базы данных имеют последовательности или встроенные методы для автоинкрементных первичных ключей.