Если мне нужен суррогат, я бы использовал либо столбец IDENTITY, либо столбец GUID в зависимости от необходимости глобальной уникальности.
Если существует естественный первичный ключ или первичный ключ определен как уникальная комбинация других внешних ключей, то у меня обычно нет ИДЕНТИЧНОСТИ, и при этом я не использую его в качестве первичного ключа.
Исключение составляют таблицы конфигурации моментальных снимков, которые я отслеживаю с помощью триггера аудита. В этом случае обычно существует логический «первичный ключ» (обычно дата снимка и естественный ключ строки - например, учетный центр или номер счета gl, для которого строка является записью конфигурации), но вместо использования естественного «первичный ключ» в качестве первичного ключа, я добавляю IDENTITY и делаю его первичным ключом, а также создаю уникальный индекс или ограничение по дате и естественному ключу. Хотя теоретически дата и естественный ключ не должны изменяться, в этих таблицах, если пользователь делает это вместо добавления новой строки и удаления старой строки, я хочу провести аудит (который отражает изменение строки, идентифицируемой его первичным ключом). ) чтобы действительно отразить изменение в строке - не исчезновение ключа, а появление нового.