2017-02-15 4 views
1

Gibt es technische Überlegungen beim Festlegen des Startwerts für eine Identitätsspalte in SQL Server?Spricht der Startwert für die Identitätsspalte der SQL-Server

Diese Spalte ist die PK und als Identity auto increment gekennzeichnet.

Das Unternehmen möchte IDs nicht bei 1 starten, da sie in Abfragezeichenfolgen öffentlich sichtbar sind und auf mehreren Seiten angezeigt werden. Mit einer höheren Zufallszahl sieht es besser aus, das macht für mich Sinn und ich möchte sicherstellen, dass mir keine technischen Überlegungen fehlen.

Dies ist ein Beispiel dafür, was ich

--Reset manufacturer id to a Random 5 digit number 
DECLARE @newId INT = (SELECT FLOOR(RAND() * 100000) + 10000 % 10000) 
DBCC CHECKIDENT (Manufacturer, RESEED, @newId); 
+0

Nun beginnt, kann RESEED ein Problem sein, wenn Sie bereits Werte in der Spalte table.ID haben. Im Allgemeinen müssen Sie sicherstellen, dass es höher als die vorhandenen Werte ist. (Lower kann auch funktionieren, aber es ist komplizierter) – RBarryYoung

+3

Diese Art von Sache sollte nicht in einer Abfragezeichenfolge sichtbar sein. Das ist eine große rote Fahne, dass dein Code nicht gut entworfen ist. Dies bedeutet möglicherweise, dass Benutzer die Abfragezeichenfolge ändern und Daten anzeigen können, die zu einer anderen Person gehören. Und ehrlich gesagt sollte dies im Allgemeinen kein Wert sein, den die Nutzer sehen sollten. Es gibt keinen technischen Grund, warum Sie es nicht mit dem von Ihnen gewünschten Wert starten können. Aber bedenken Sie, dass Sie regelmäßig große Lücken bekommen können und werden. –

+0

@RBarryYoung Das ist richtig, meine Tabellen werden komplett leer sein – GER

Antwort

0

Zusammenfassung einiger Kommentare zu einer Antwort.

Der Start-Identity-Wert muss alle Werte berücksichtigen, die bereits in der Tabelle enthalten sind. Da die ID automatisch inkrementiert wird, kollidiert sie möglicherweise mit bereits vorhandenen Werten, wenn die ID zu niedrig gesetzt wird.

In der Sequenz der Ids können große Lücken auftreten. Es ist jedoch unwahrscheinlich, dass ein hoher Anfangssamen und viele Lücken zur Erschöpfung des INT-Bereichs für die Säule führen können. Dann wird die App zum Boom!

Alle Indizes für die Spalte nicht kümmern sollte, wenn es auf 1 oder 99999

0

ich ab einem gewissen Zufall Zukunft Nummer jedes Problem sehe nicht tun werde.

Verwandte Themen