Die Eindeutigkeit kann mit einer eindeutigen Einschränkung erzwungen werden.
Ob der eindeutige Index zwischen Groß- und Kleinschreibung unterscheidet, wird vom Server (oder der Tabelle) Kollation definiert.
Sie können die aktuelle Zusammenstellung der Datenbank mit dieser Abfrage erhalten:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
und Sie sollten so etwas wie erhalten:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Hier die „CI_AS“ am Ende des Vergleichs bedeutet: CI = Case Insensitive, AS = Akzent-sensitiv.
Dies kann geändert werden, was auch immer Sie benötigen. Wenn Ihre Datenbank und/oder Tabelle eine Sortierung unter Berücksichtigung der Groß-/Kleinschreibung erfordert, würde ich erwarten, dass die Eindeutigkeit Ihres Indexes auch die Groß- und Kleinschreibung berücksichtigt, z. Ihre abcdef und ABCDEF sollten beide als eindeutige Zeichenfolgen akzeptabel sein.
Marc
UPDATE:
ich diesen gerade versucht (SQL Server 2008 Developer Edition x64) - funktioniert für mich (meine Datenbank ist die „Latin1_General_CI_AS Sortierungs im Allgemeinen, aber ich kann ein anderes pro definieren Tabelle/pro VARCHAR Spalte selbst):
CREATE TABLE TestUnique
(string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)
CREATE UNIQUE INDEX UIX_Test ON dbo.TestUnique(string)
INSERT INTO dbo.TestUnique(string) VALUES ('abc')
INSERT INTO dbo.TestUnique(string) VALUES ('ABC')
SELECT * FROM dbo.TestUnique
und ich zurück:
string
ABC
abc
und kein Fehler bei der Verletzung des eindeutigen Indexes.
@Mitch: vielleicht ist er mit Fall # 10 konfrontiert :-) Sie wissen nie .... –
Einfach gesagt, ich will mehr Optionen. Ich erwarte, dass die Tabelle wirklich sehr groß wird, also 62 statt 36 Zeichen. Abc ... ABC ... 123 ... Außerdem verwendet das Feld nur 5 Zeichen. –
Dieser Beitrag ist grundsätzlich zu einem anderen Beitrag kostenlos http://StackOverflow.com/Questions/1513911/most-efficient-way-to-unique-random-string –