- 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 Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 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 Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net 0-000-000-0000
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net 0-000-000-0000
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org 0-000-000-0000
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 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', 'jdoe@domain.com', 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]