Domanda

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

Sto cercando sia TSQL che come farlo nel diagramma del database.

È stato utile?

Soluzione

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 sulla tabella e selezionare 'Indici/Chiavi'
  • fare clic sul pulsante Aggiungi per aggiungere un nuovo indice
  • inserisci le informazioni necessarie nelle Proprietà sul lato destro:
    • le colonne desiderate (fare clic sul pulsante con i puntini di sospensione per selezionare)
    • set È univoco su Sì
    • dargli un nome appropriato

Altri suggerimenti

In SQL Server Management Studio Express:

  • Fare clic con il tasto destro sulla tabella, scegliere Modificare O Design (per versioni successive)
  • Fare clic con il pulsante destro del mouse sul campo, scegliere Indici/Chiavi...
  • Clic Aggiungere
  • Per Colonne, seleziona il nome del campo vuoi essere unico.
  • Per Tipo, scegliere Chiave Unica.
  • Clic Vicino, Salva la tavola.
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

Avvertimento:Nella colonna che hai impostato come univoca può essere presente solo una riga nulla.

Puoi farlo con un indice filtrato in SQL 2008:

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

Vedere Il valore del campo deve essere univoco a meno che non sia NULL per una serie di risposte.

ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

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

Facendo clic con il pulsante destro del mouse sulla tabella e selezionando Indici/Chiavi...

Fai clic sul pulsante "Aggiungi" e modifica le colonne con quelle che desideri rendere univoche.

Il cambiamento è esclusivo di Sì.

Fare clic su Chiudi e salvare il diagramma e lo aggiungerà alla tabella.

Stai cercando qualcosa di simile al seguente

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

Documenti MSDN

Per creare un vincolo UNIQUE su una o più colonne quando la tabella è già 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.

Nel diagramma di Management Studio scegli la tabella, fai clic con il pulsante destro del mouse per aggiungere una nuova colonna, se lo desideri, fai clic con il pulsante destro del mouse sulla colonna e scegli "Verifica vincoli", lì puoi aggiungerne una.

In alcune situazioni, potrebbe essere opportuno assicurarsi che la chiave univoca non esista prima di crearla.In questi casi, lo script seguente potrebbe essere d'aiuto:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top