Unieke beperking voor meerdere kolommen

Hoe voeg ik een unieke beperking toe voor kolommen fcode, scode, dcodemet t-sqlen/of management studio? fcode, scode, dcodemoeten samen uniek zijn.


Antwoord 1, autoriteit 100%

Als de tabel al in de database is gemaakt, kunt u later een unieke beperking toevoegen door deze SQL-query te gebruiken:

ALTER TABLE dbo.User
  ADD CONSTRAINT ucCodes UNIQUE (fcode, scode, dcode)

Antwoord 2, autoriteit 68%

Door de beperkingsdefinitie bij het maken van tabellen te gebruiken, kunt u een of meerdere beperkingen opgeven die meerdere kolommen overspannen. De syntaxis, vereenvoudigd uit technet’s documentatie, heeft de vorm van:

CONSTRAINT constraint_name UNIQUE [ CLUSTERED | NONCLUSTERED ] 
(
    column [ ASC | DESC ] [ ,...n ]
)

Daarom zou de volgende tabeldefinitie zijn:

CREATE TABLE [dbo].[user](
    [userID] [int] IDENTITY(1,1) NOT NULL,
    [fcode] [int] NULL,
    [scode] [int] NULL,
    [dcode] [int] NULL,
    [name] [nvarchar](50) NULL,
    [address] [nvarchar](50) NULL,
    CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED 
    (
        [userID] ASC
    ),
    CONSTRAINT [UQ_codes] UNIQUE NONCLUSTERED
    (
        [fcode], [scode], [dcode]
    )
) ON [PRIMARY]

Antwoord 3, autoriteit 14%

Dit kan ook in de GUI. Hier is een voorbeeld van het toevoegen van een unieke beperking met meerdere kolommen aan een bestaande tabel.

  1. Klik onder de tabel met de rechtermuisknop op Indexen->Click/hover Nieuwe index->Click Niet-geclusterde index…

voer hier de afbeeldingsbeschrijving in

  1. Er wordt een standaardindexnaam gegeven, maar u kunt deze wijzigen. Vink het selectievakje Uniekaan en klik op de knop Toevoegen…

voer hier de afbeeldingsbeschrijving in

  1. Controleer de kolommen die u wilt opnemen

voer hier de afbeeldingsbeschrijving in

Klik op OKin elk venster en je bent klaar.


Antwoord 4

USE [TSQL2012]
GO
/****** Object:  Table [dbo].[Table_1]    Script Date: 11/22/2015 12:45:47 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table_1](
    [seq] [bigint] IDENTITY(1,1) NOT NULL,
    [ID] [int] NOT NULL,
    [name] [nvarchar](50) NULL,
    [cat] [nvarchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
 CONSTRAINT [IX_Table_1] UNIQUE NONCLUSTERED 
(
    [name] ASC,
    [cat] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Other episodes