martedì 16 maggio 2017

Rendere univoco campo tabella SQL Server

Se usi il potentissimo SQL Server, potrebbe anche sorgere l'esigenza di rendere univoco un campo di una tabella da te creata.
Compiere questa modifica ad una tabella del database sql, significa impedire l'inserimento di record duplicati su determinati campi.

Un esempio tipico di questa necessità può essere la username di accesso ad un sito internet, o l'email.
Sicuramente è cosa buona e giusta bloccare tramite programmazione web l'inserimento di doppioni per questi campi, tuttavia per sicurezza, se lo si fa agendo anche su sql server, sicuramente si blocca sul nascere ogni possibilità (anche futura, se nascono altre app che interagiscono con quella tabella) di avere record doppi.


Come rendere univoco un campo di una tabella su SQL Server


Per poter creare campi sql univoci, su una tabella già esistente, basta usare la seguente sintassi:

ALTER TABLE nome-tabella ADD CONSTRAINT ak_nome-campo UNIQUE (nome-campo);

Con questa semplice riga di codice sql server, avrai impedito, lato database, ogni possibile inserimento di record doppi, nel campo da te specificato.
Ovviamente, è possibile replicare questo comando per qualsiasi altro campo della tabella in oggetto, senza limiti di numero.

Se si proverà ad inserire un doppione in un campo definito come unique, si riceverà a video il seguente messaggio d'errore:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Violation of UNIQUE KEY constraint 'ak_username'. Cannot insert duplicate key in object 'dbo.nome-tab'. The duplicate key value is (valore-duplicato).


Se non ti fidi di chi svilupppa le applicazioni che interagiscono con i tuoi database, questo comando per impedire l'inserimento di doppioni su sql server è uno dei più importanti da saper utilizzare :)

Lascia un commento!