it-swarm.it

SQL Server 2005 Come creare un vincolo univoco?

Come posso creare un vincolo univoco su una tabella esistente in SQL Server 2005?

Sto cercando sia il TSQL e come farlo nel Database Diagram.

180
David Basarab

Il comando SQL è:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

Vedi la sintassi completa qui .

Se vuoi farlo da un diagramma di database:

  • fare clic con il tasto destro del mouse sulla tabella e selezionare "Indici/Chiavi"
  • fai clic sul pulsante Aggiungi per aggiungere un nuovo indice
  • inserisci le informazioni necessarie nelle Proprietà a destra:
    • le colonne che vuoi (fai clic sul pulsante Ellipsis per selezionare)
    • set è unico per Sì
    • dargli un nome appropriato
272
Rory

In SQL Server Management Studio Express:

  • Tabella del tasto destro, scegliere Modifica o Design (per versioni successive)
  • Fare clic con il tasto destro del mouse, scegliere Indici/Chiavi ...
  • Fai clic su Aggiungi
  • Per Columns , seleziona il nome del campovuoi essere univoco.
  • Per Tipo , scegliere Chiave univoca .
  • Fare clic su Chiudi , Salva sulla tabella.
84
James Lawruk
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
28
WildJoe

Attenzione: nella colonna che hai impostato come unica, può trovarsi solo una riga vuota.

Puoi farlo con un indice filtrato in SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Vedi Il valore del campo deve essere univoco a meno che non sia NULL per un intervallo di risposte.

15
Squirrel
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]
13
Ivan Bosnic

Ho anche scoperto che puoi farlo tramite i diagrammi del database.

Facendo clic con il tasto destro sulla tabella e selezionando Indici/Chiavi ...

Fare clic sul pulsante "Aggiungi" e modificare le colonne nella/e colonna/e che si desidera rendere univoci.

Il cambiamento è unico per Sì.

Fai clic su Chiudi e salva il diagramma e lo aggiungerà alla tabella.

10
David Basarab

Stai cercando qualcosa di simile al seguente

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Docs

8
Thunder3

Per creare un vincolo UNIQUE su una o più colonne quando la tabella è già stata creata, utilizzare il seguente SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Per consentire la denominazione di un vincolo UNIQUE per la query precedente

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

La query supportata da MySQL/SQL Server/Oracle/MS Access.

6
Rafiq

Nel diagramma dello studio di gestione, seleziona la tabella, fai clic con il pulsante destro del mouse per aggiungere una nuova colonna, se necessario, fai clic con il pulsante destro del mouse sulla colonna e seleziona "Verifica vincoli". È possibile aggiungerne una.

5
Gibbons

In alcune situazioni, potrebbe essere desiderabile assicurarsi che la chiave Unica non esista prima di crearla. In questi casi, lo script seguente potrebbe aiutare:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
0
Mario Vázquez