Come posso creare un unico vincolo sulla mia colonna (SQL Server 2008 R2)?

Ho SQL Server 2008 R2 e voglio impostare una colonna unica.

Sembra che ci siano due modi per farlo: “indice univoco” e “unico vincolo”. Non sono molto diversi da quello che ho capito, anche se unico vincolo è raccomandato dalla maggior parte, perché si ottiene anche un indice automaticamente.

Come faccio a creare un vincolo di unicità?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

C’è un modo per creare un vincolo univoco tramite SQL Server Management Studio?

 

4 Replies
  1. 51

    Per creare questi vincoli attraverso l’interfaccia grafica è necessario il “indici e le chiavi” dialogo e non i vincoli check uno.

    Ma nel tuo caso hai solo bisogno di eseguire il pezzo di codice che hai già. Non ha bisogno di essere inserito nell’espressione di dialogo a tutti.

    • Quindi posso solo eseguire una query? Quando ho provato, ha funzionato correttamente, ma c’è un posto che posso andare a vedere di che (vale a dire quando è stata l’impostazione modificata)?
    • Si dovrebbe vedere in Esplora oggetti di SSMS se si espande il tavolo e guardare sotto “Chiavi”
  2. 107

    Colonna unica in SQL Server dalla GUI:

    Che davvero ti fanno correre intorno al fienile a che fare con la GUI:

    Assicurarsi che la colonna non violare il vincolo unique prima di iniziare.

    1. Open SQL Server Management Studio.
    2. Fare clic con il pulsante Tabella, fare clic su “Design”.
    3. Fare clic destro sulla colonna che si desidera modificare, apparirà un menu a comparsa, fare clic su Indici/Chiavi.
    4. Fare clic sul Pulsante “Aggiungi”.
    5. Espandere la scheda “Generale”.
    6. Assicurarsi di che avere la colonna che si desidera rendere unico selezionato in “colonne” di dialogo.
    7. Cambiare il “Tipo” casella “Chiave Unica”.
    8. Fare Clic Su “Chiudi”.
    9. Vedete un po ‘ asterisco nella finestra del file, questo significa che le modifiche non ancora salvate.
    10. Premere Salva o premi Ctrl+s. Si deve salvare, e la colonna deve essere univoco.

    O colonna come unica finestra di Query SQL:

    alter table location_key drop constraint pinky;
    alter table your_table add constraint pinky unique(yourcolumn);

    Modifiche hanno effetto immediato:

    Command(s) completed successfully.
    • Grande. Inoltre, è possibile aggiungere più colonne in TSQL script come questo: alter table your_table aggiungere il vincolo di pinky unico(yourcolumn, yourcolumn_2);
  3. 15

    Ecco un altro modo attraverso la GUI che fa esattamente ciò che il vostro script, anche se si passa attraverso Indici (non Vincoli) nell’explorer oggetti.

    1. Fare clic destro su “Indici” e fare clic su “Nuovo Indice…” (nota: questo non è
      disabilitato se hai aperto la tabella in visualizzazione struttura)

    Come posso creare un unico vincolo sulla mia colonna (SQL Server 2008 R2)?

    1. Dare un nuovo indice di un nome (“U_Name”), selezionare “Unico”,
      e fare clic su “Aggiungi…”

    Come posso creare un unico vincolo sulla mia colonna (SQL Server 2008 R2)?

    1. Selezionare la colonna “Nome” nella prossima windown

    Come posso creare un unico vincolo sulla mia colonna (SQL Server 2008 R2)?

    1. Fare clic su OK in entrambe le finestre
    • In sql server management studio 2014, il right-click menu di contesto opzioni per la creazione di un nuovo indice, che sono leggermente diversi da sopra la cattura dello schermo. Quando si fa clic Nuovo Indice, quindi è necessario scegliere da un elenco di (Indice Cluster, camere Non-Clustered Index, Indice XML Primario, Secondario XML Indice Territoriale Indice Non Cluster Indice Columnstore, e Cluster Indice Columnstore). In genere, dovresti scegliere di Indice Non Cluster.
  4. 8

    Una cosa chiaramente non coperti è che microsoft sql è la creazione in background un indice univoco per l’aggiunta di un vincolo

    create table Customer ( id int primary key identity (1,1) , name nvarchar(128) ) 
    
    --Commands completed successfully.
    
    sp_help Customer
    
    ---> index
    --index_name    index_description   index_keys
    --PK__Customer__3213E83FCC4A1DFA    clustered, unique, primary key located on PRIMARY   id
    
    ---> constraint
    --constraint_type   constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
    --PRIMARY KEY (clustered)   PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
    
    
    ---- now adding the unique constraint
    
    ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
    
    -- Commands completed successfully.
    
    sp_help Customer
    
    ---> index
    ---index_name   index_description   index_keys
    ---PK__Customer__3213E83FCC4A1DFA   clustered, unique, primary key located on PRIMARY   id
    ---U_Name   nonclustered, unique, unique key located on PRIMARY name
    
    ---> constraint
    ---constraint_type  constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
    ---PRIMARY KEY (clustered)  PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
    ---UNIQUE (non-clustered)   U_Name  (n/a)   (n/a)   (n/a)   (n/a)   name

    come si può vedere , c’è un nuovo vincolo e un nuovo indice U_Name

Lascia un commento