Проблема с использованием счетчика, а затем счетом +1 в качестве ключа, заключается в том, что если вы удалите запись из середины, вы получите сгенерированный дубликат ключа.
EG:
Key Data
1 A
2 B
3 C
4 D
теперь удалите B (количество становится 3) и вставьте E. Это попытается сделать новый первичный ключ равным 4, который уже существует.
Key Data
1 A
3 C
4 D <--After delete count = 3 here
4 E <--Attempted insert with key 4
Вы можете использовать первичный ключ и автоинкремент, чтобы убедиться, что у вас нет этой проблемы
CREATE TABLE myTable
(
P_Id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (P_Id)
)
Или вы можете использовать GUID. Принцип работы GUID заключается в создании 128-битного целого числа (представленного в виде шестнадцатеричной строки из 32 символов)
Key Data
24EC84E0-36AA-B489-0C7B-074837BCEA5D A
.
.
В результате получается 2 ^ 128 возможных значений (на самом деле, больших), поэтому шансы создания аналогичных значений одним компьютером чрезвычайно малы. Кроме того, есть алгоритмы, которые помогут попытаться избежать этого. Таким образом, GUID также является хорошим выбором для ключа.
Что касается того, используете ли вы целое число или GUID, обычно зависит от приложения, политики и т. Д.