2010-02-01 13 views
31

Come si aggiunge un vincolo univoco in SQL Server 2005 a due colonne? Allora supponiamo che io ho:SQL Server 2005 Vincolo univoco su due colonne

PK, A, B ... 
x1 1 1 
x2 1 2 
x3 2 1 
x4 2 2 

Non dovrei essere in grado di aggiungere un'altra riga 'x5' e hanno i valori di A e B sia 1,1 in quanto sono già nel database in x1?

Ok siamo riusciti a farlo funzionare e grazie a OMG. Vai alla vista tabella, seleziona le due colonne, fai clic con il tasto destro e seleziona "indici/chiavi" - scheda generale, seleziona le colonne che vuoi essere univoche e imposta "è univoco" su true. Questo sta usando il designer del tavolo.

Grazie.

+0

Duplicato: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

+0

hai visto ? – Rafael

risposta

35

In SQL Server, un vincolo univoco viene implementato come un indice univoco. Utilizzare:

CREATE UNIQUE INDEX <uix_name> ON <table_name>(<col_A>, <col_B>) 

Per ulteriori informazioni, vedere this MSDN page.

+0

Sì, lo abbiamo gestito tramite il designer del tavolo e ha funzionato, fantastico. – flavour404

+0

Sono d'accordo con @adaTheDev e aggiungo il vincolo di tabella piuttosto che aggiungere un indice univoco "raw". La creazione di indici implica un possibile miglioramento delle prestazioni. Ma poi si potrebbe abbandonare questo indice prima di rendersi conto che non è lì per le prestazioni ma per la funzionalità. Non abbandoneresti mai un vincolo senza rendertene conto che la maggior parte di essi serve a fini funzionali. (ammettiamolo, un vincolo univoco crea una fine indice univoca ma non può essere eliminato direttamente, solo eliminando il vincolo) –

+0

@Ralph Shillington: Un indice univoco può anche avere colonne INCLUDE. Un vincolo non può. Per maggiori informazioni: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

37
ALTER TABLE YourTable 
ADD CONSTRAINT UQ_YourTable_ConstraintName UNIQUE(A, B) 
+0

Qual è la sintassi che va nella casella del vincolo. Evidenziamo le due colonne, facciamo clic con il tasto destro del mouse su "UNIQUE (DocType, PubID)" e sappiamo che c'è un errore - "Errore di convalida dei vincoli" – flavour404

+1

Più facile/più veloce di quello che si ottiene anche nel progettista della tabella - solo aprire una nuova scheda di query in SSMS ed eseguire SQL. – AdaTheDev

+0

+1: vincolo univoco per la vittoria, indica a qualcuno che arriva al sistema in futuro più di un indice univoco. –

Problemi correlati