Hogyan biztosítanád egy SQL Server táblában, hogy egy oszlop csak egyedi értékeket tartalmazzon, de NULL-ból bármennyi lehessen benne?
USE TempDB GO set ansi_nulls on; go CREATE TABLE AlmaTabla (Oszlop1 INT NULL); GO -------------------------------------- -- Ide kellene valami, amitol az alabb lathato eredmenyek szuletnek -------------------------------------- --Elvart eredmeny: INSERT INTO AlmaTabla (Oszlop1) VALUES (1) --ok GO INSERT INTO AlmaTabla (Oszlop1) VALUES (2) --ok GO INSERT INTO AlmaTabla (Oszlop1) VALUES (NULL) --ok GO INSERT INTO AlmaTabla (Oszlop1) VALUES (NULL) --ok GO INSERT INTO AlmaTabla (Oszlop1) VALUES (2) --exception GO DROP TABLE AlmaTabla; GO
A Test Driven Development tanfolyam következő felvonása február kilencedikén lesz, szeretettel várlak.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
6 COMMENTS
CREATE UNIQUE INDEX IX_Oszlop1 ON AlmaTabla (Oszlop1) WHERE Oszlop1 IS NOT NULL
A filtered index segítségével (MSSQL Server 2008-tól):
create unique nonclustered index idxAlmaTabla__Oszlop1 on AlmaTabla(Oszlop1) where Oszlop1 is not null
CREATE TABLE [dbo].[Tabla](
[ID] [int] NULL
) ON [PRIMARY]
CREATE UNIQUE NONCLUSTERED INDEX [UniqueExceptNulls]
ON [dbo].[Tabla] (ID)
WHERE [ID] IS NOT NULL
Bocs, a te kódod alapján ez a kód:
CREATE UNIQUE NONCLUSTERED INDEX [UniqueExceptNulls]
ON [dbo].[AlmaTabla] (Oszlop1)
WHERE [Oszlop1] IS NOT NULL
CREATE UNIQUE INDEX UIX_Oszlop1
ON AlmaTabla(Oszlop1)
WHERE Oszlop1 IS NOT NULL