Czy istnieje sposób na utworzenie kolumny UNIQUE i wielkości liter?Niepowtarzalna kolumna SQL Server 2008 z rozróżnianiem wielkości liter
chcę móc umieścić
ABCDE i ABCDE
w unikalnym kolumny.
Czy istnieje sposób na utworzenie kolumny UNIQUE i wielkości liter?Niepowtarzalna kolumna SQL Server 2008 z rozróżnianiem wielkości liter
chcę móc umieścić
ABCDE i ABCDE
w unikalnym kolumny.
Unikalność można wymusić za pomocą unikalnego ograniczenia.
To, czy unikalny indeks rozróżnia wielkość liter, jest określane przez serwer (lub tabelę) zestawianie.
można uzyskać bieżące sortowanie bazy danych z tego zapytania:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
i powinieneś otrzymać coś takiego:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Tutaj „CI_AS” na końcu zestawień oznacza: CI = Rozróżnianie wielkości liter, AS = Z akcentem wrażliwym.
Można to zmienić na wszystko, czego potrzebujesz. Jeśli w bazie danych i/lub tabeli występuje sortowanie z rozróżnianiem wielkości liter, spodziewałbym się, że w wyjątkowości indeksu będzie rozróżniana wielkość liter, np. Twój abonent musi być akceptowany jako unikalny ciąg znaków.
Marc
UPDATE:
Właśnie próbowałem to (SQL Server 2008 Developer Edition x64) - działa na mnie (moja baza danych jest na ogół za pomocą „Latin1_General_CI_AS sortowania, ale mogę określić inny jeden na stół/na kolumnie VARCHAR nawet):
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
i wrócę:
string
ABC
abc
i żaden błąd dotyczący naruszenia unikalnego indeksu.
Próbowałem skryptowane wymienione przez marc i działało dobrze dla mnie, na SQL Server 2008, 32bit. – RBarryYoung
Wygląda na to, że nie ma możliwości zrobienia tego w tabeli w interfejsie użytkownika. Można to jednak zrobić podczas tworzenia bazy danych dla całej bazy danych, co wydaje się nieco zbyt daleko idące. –
Potrzebowałem do importu danych z bazy danych uwzględniającej wielkość liter. Kiedy próbowałem umieścić klucz podstawowy w kolumnie, która jest kluczem podstawowym na źródle, nie mogłem tego zrobić z powodu duplikowania kluczy. Zmieniłem sortowanie dla kolumny (varchar) na wielkość liter (kliknij prawym przyciskiem myszy na stole, wybierz Projekt, podświetl kolumnę, którą chcesz zmienić i kliknij elipsis w sortowaniu), a teraz działa dobrze. (SQL Server 2008 R2 64-bitowy).
Jeśli ktoś musi to zrobić na istniejącej tabeli, która już ma wartość unique key/index
zdefiniowaną w kolumnie varchar
/, poniżej znajduje się skrypt.
ALTER TABLE [YourTable] DROP CONSTRAINT [UIX_YourUniqueIndex]
GO
ALTER TABLE [YourTable] ALTER COLUMN [YourColumn] [nvarchar](50) COLLATE Latin1_General_CS_AS NOT NULL;
GO
ALTER TABLE [YourTable] ADD CONSTRAINT [UIX_YourUniqueIndex] UNIQUE NONCLUSTERED
(
[YourColumn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Dzięki @Devraj Gadhavi za krok po kroku, ponieważ jest to dokładnie to, co musiałem zrobić również. Miałem zamiar wykonać te skrypty, ale potem (używając SSMS 2008R2), osiągnąłem to samo w bardziej leniwy sposób :-).W widoku drzewa zlokalizowałem moją tabelę i kolumnę, a następnie kliknąłem prawym przyciskiem myszy na kolumnie Chciałem zmienić sortowanie i wybrałem opcję "Modyfikuj". W wyświetlonym oknie zmieniłem sortowanie we właściwościach na wielkość liter, a następnie w dowolnym miejscu na otwartej przestrzeni w górnej części okna (gdzie kolumny są wymienione w formie tabeli) Kliknąłem prawym przyciskiem i wybrałem opcję "Generate Change Script ... "
@Mitch: może on stoi skrzynka # 10 :-) nigdy nie wiesz .... –
Po prostu, chcę więcej opcji. Spodziewam się, że stół stanie się naprawdę duży, więc mam 62 opcje zamiast 36. abc ... ABC ... 123 ... Również w polu jest tylko 5 znaków. –
Ten wpis jest zasadniczo bezpłatny dla innego posta http://stackoverflow.com/questions/1513911/most-efficient-way-to-unique-random-string –