Impostare un campo con valori univoci

mercoledì 06 dicembre 2006 - 15.11

Giovanni_3478 Profilo | Senior Member

Ciao

Uso microsoft ms sql express 2005

Ho creato una tabella
e, di un campo (nome_categoria) ,
vorrei specificare che i valori immessi non devono essere uguali a quelli già immessi precedentemente.

In modo tale che
quando vado ad immettere valori uguali a quelli già precedentemente immessi,
me lo impedisca.

In questa tabella c'è già un campo (id) con una chiave primaria
ed è rappresentato da valori numerici (int).

Devo creare per forza un'altra tabella?

lbenaglia Profilo | Guru

>In questa tabella c'è già un campo (id) con una chiave primaria
>ed è rappresentato da valori numerici (int).
>
>Devo creare per forza un'altra tabella?

Ciao Giovanni,

no, puoi definire un constraint UNIQUE sulla colonna nome_categoria.
Ti allego un esempio:

USE tempdb; GO CREATE TABLE dbo.myTable ( myID int NOT NULL IDENTITY PRIMARY KEY, nome_categoria varchar(11) ); /* Aggiungo il constraint UNIQUE alla colonna ** nome_categoria */ ALTER TABLE dbo.myTable ADD CONSTRAINT UN_nome_categoria UNIQUE(nome_categoria); GO INSERT dbo.myTable VALUES('Categoria 1'); INSERT dbo.myTable VALUES('Categoria 2'); INSERT dbo.myTable VALUES('Categoria 3'); /* Provo ad inserire una categoria già presente */ INSERT dbo.myTable VALUES('Categoria 1'); /* Output: Msg 2627, Level 14, State 1, Line 1 Violation of UNIQUE KEY constraint 'UN_nome_categoria'. Cannot insert duplicate key in object 'dbo.myTable'. The statement has been terminated. */ SELECT * FROM dbo.myTable; /* Output: myID nome_categoria ----------- -------------- 1 Categoria 1 2 Categoria 2 3 Categoria 3 (3 row(s) affected) */ DROP TABLE dbo.myTable;

Per maggiori dettagli consulta i Books Online:

"UNIQUE Constraints"
http://msdn2.microsoft.com/en-gb/library/ms191166.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Giovanni_3478 Profilo | Senior Member

Grazie mille

Giovanni_3478 Profilo | Senior Member

Riprendo questo post
senza aprirne uno nuovo.

Uso microsoft ms sql express 2005
e sql server management studio express.

Per aggiungere ad esempio
ADD CONSTRAINT UN_nome_categoria UNIQUE(nome_categoria);
come devo fare?

In pratica per vedere "il codice" di tutte le tabelle
come hai fatto te
e per poi aggiungere la "UNIQUE Constraints"
come devo fare?

lbenaglia Profilo | Guru

>Uso microsoft ms sql express 2005
>e sql server management studio express.
>
>Per aggiungere ad esempio
>ADD CONSTRAINT UN_nome_categoria UNIQUE(nome_categoria);
>come devo fare?
E' sufficiente lanciare SQL Server Management Studio Express (SSMSE), premere il bottone "New Query", incollare il comando SQL e premere il bottone F5.

>In pratica per vedere "il codice" di tutte le tabelle
>come hai fatto te
>e per poi aggiungere la "UNIQUE Constraints"
>come devo fare?
Per generare il comando CREATE TABLE relativo ad una singola tabella non devi fare altro che selezionarla, tasto DX, Edit; se invece vuoi generare lo script di tutte le tabelle puoi ricorrere al SQL Server Script Wizard che richiami selezionando il db, tasto DX, Tasks, Generate Scripts...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Giovanni_3478 Profilo | Senior Member

Thanks
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5