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.

January 7, 2015 / by Zsolt Soczó

SQL fejtörő 3.

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

  • Rici January 7, 2015

    CREATE UNIQUE INDEX IX_Oszlop1 ON AlmaTabla (Oszlop1) WHERE Oszlop1 IS NOT NULL

  • Atcom January 7, 2015

    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

  • Meister January 7, 2015

    CREATE TABLE [dbo].[Tabla](
    [ID] [int] NULL
    ) ON [PRIMARY]

    CREATE UNIQUE NONCLUSTERED INDEX [UniqueExceptNulls]
    ON [dbo].[Tabla] (ID)
    WHERE [ID] IS NOT NULL

  • Meister January 7, 2015

    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

  • Molnár Csaba January 8, 2015

    CREATE UNIQUE INDEX UIX_Oszlop1
    ON AlmaTabla(Oszlop1)
    WHERE Oszlop1 IS NOT NULL