Kromě klasického nastavení IDENTITY(1,1), tedy inkrementace od jedničky a vždy o +1, můžeme nastavit inkrement i záporný, tedy vždy odečítat jedničku, jak je vidět v příkladu níže.
CREATE TABLE dbo.SampleTable ( Id INT IDENTITY(0, -1) NOT NULL PRIMARY KEY ) GO INSERT dbo.SampleTable DEFAULT VALUES GO 5 SELECT * FROM dbo.SampleTable GO
Kromě záporného inkrementu může nastavit i zápornou výchozí hodnotu prvního záznamu, například takto:
CREATE TABLE dbo.SampleTable ( Id SMALLINT IDENTITY(-32768, 1) NOT NULL PRIMARY KEY ) GO INSERT INTO dbo.[SampleTable] DEFAULT VALUES GO 5 SELECT * FROM dbo.[SampleTable] GO
Záporná výchozí hodnota nám přináší obrovskou výhodu pro scénáře, kdy pracujeme například s rozsáhlými faktovými tabulkami a snažíme se ušetřit velikost uložených dat tím, že dimenzionální klíče budou mít co nejmenší datový typ, např. tiny nebo smallint. Pokud ale například počet členů naší dimenze bude někde mezi 30 a 60 tisíci, napadne nás, že již nemůžeme použít smallint datový typ, protože jeho maximální hodnota je 32,767. To ale není pravda, pokud si uvědomíme, že jeho minimální hodnota je -32,768, takže celkem včetně nuly lze do tohoto datového typu uložit 65,535 hodnot. A právě nastavením identity sloupce s výchozí hodnotou -32768 můžeme celý tento rozsah vyčerpat.
Hodnoty klíčů s negativním znamínkem můžou být pochopitelně ne úplně esteticky přijatelné a je třeba na znaménko myslet i při dotazech. Lehce vylepšit lze uvedenou situaci tím, že jako výchozí hodnotu zvolíme maximum 32767 a negativní inkrement a většina našich hodnot bude v kladném rozsahu.