it-swarm.com.de

Eindeutige Einschränkung für mehrere Spalten

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
    )
    ) ON [PRIMARY]

    GO

Wie füge ich eine eindeutige Einschränkung für Spalten hinzu? fcode, scode, dcode mit t-sql und/oder management studio? fcode, scode, dcode muss zusammen einzigartig sein.

234
loviji

Mithilfe der Einschränkungsdefinition bei der Tabellenerstellung können Sie eine oder mehrere Einschränkungen angeben, die sich über mehrere Spalten erstrecken. Die aus technets Dokumentation vereinfachte Syntax lautet:

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

Daher wäre die Definition der resultierenden Tabelle:

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]
272
devmake

Wenn die Tabelle bereits in der Datenbank erstellt wurde, können Sie später mithilfe dieser SQL-Abfrage eine eindeutige Einschränkung hinzufügen:

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

Dies kann auch in der GUI erfolgen. Im folgenden Beispiel wird einer vorhandenen Tabelle eine mehrspaltige eindeutige Einschränkung hinzugefügt.

  1. Klicken Sie mit der rechten Maustaste unter die Tabelle . Indizes -> Klicken/Bewegen . Neuer Index . -> Klicken Sie auf Non-Clustered Index ...

enter image description here

  1. Es wird ein Standard-Indexname angegeben, den Sie möglicherweise ändern möchten. Aktivieren Sie das Kontrollkästchen Eindeutig und klicken Sie auf die Schaltfläche Hinzufügen ...

enter image description here

  1. Überprüfen Sie die Spalten, die Sie einschließen möchten

enter image description here

Klicken Sie in jedem Fenster auf [~ # ~] ok [~ # ~] und Sie sind fertig.

40
Tony L.
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
0
Muhanned Kamil