- Comprendere le limitazioni dei dati nelle colonne NOT NULL
- Annullamento dei dati delle colonne esistenti
- Modificare la struttura dei dati della colonna
- Verifica annullabilità alterata
Modifica della struttura dei dati di una colonna in SQL Server da NULL
a NOT NULL
, impedendo così valori non nulli in quella colonna, viene generalmente eseguito utilizzando il relativamente semplice ALTER TABLE
sintassi per modificare opportunamente la colonna in questione.
In questo tutorial esamineremo le importanti precauzioni di sicurezza necessarie quando si altera esistente dati in una colonna, prima di emettere effettivamente qualsiasi ALTER
comandi che potrebbero causare danni alla tabella stessa.
Comprendere le limitazioni dei dati nelle colonne NOT NULL
Prima di apportare modifiche alla tabella, è importante esaminare brevemente quali dati possono (e non possono) essere specificati all'interno di una colonna esistente che desideri modificare in NOT NULL
, assicurando che nessuna riga possa avere un NULL
valore in quella colonna.
Soprattutto, tutti i NULL
esistenti valori all'interno della colonna devono essere aggiornato a un valore non null prima di ALTER
il comando può essere utilizzato con successo e la colonna è stata resa NOT NULL
. Qualsiasi tentativo di impostare la colonna su NOT NULL
mentre l'attuale NULL
i dati rimasti nella colonna risulteranno in un errore e non si verificheranno modifiche.
Annullamento dei dati delle colonne esistenti
Per garantire che non ci siano NULL
valori nella nostra colonna, utilizzeremo un UPDATE
di base comando, applicabile esplicitamente alle righe in cui il valore è attualmente NULL
. Ad esempio, abbiamo una tabella di base di client
dati con name
, email
e phone
. Attualmente alcuni record hanno un NULL
phone
valore, che non vogliamo consentire:
clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected]
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected]
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected]
10 Kamal Buchanan [email protected] 1-325-847-4838
Pertanto, possiamo inserire un valore predefinito per tutti i phone
valori che sono attualmente NULL
con la seguente affermazione:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Ora il nostro NULL
i valori sono stati tutti sostituiti con il valore che consideriamo il default
, 0-000-000-0000
:
clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected] 0-000-000-0000
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected] 0-000-000-0000
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected] 0-000-000-0000
10 Kamal Buchanan [email protected] 1-325-847-4838
Modificare la struttura dei dati della colonna
Ora che non ci sono NULL
valori, possiamo emettere il nostro ALTER
per aggiornare la colonna in modo che tutte le aggiunte future non consentano NULL
valori. Poiché stiamo modificando il phone
colonna in questo esempio, l'istruzione sarà simile a questa:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Verifica annullabilità alterata
Una volta apportata la modifica alla colonna, è buona norma verificare che la colonna non consenta più alcun NULL
valori eseguendo un semplice INSERT
prova e prova ad inserire un nuovo record con NULL
valore nella colonna modificata:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', '[email protected]', NULL);
Se tutto è andato secondo i piani, SQL Server visualizzerà un errore che indica che la colonna non consente NULL
valori:
Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]