- De beperkingen van gegevens in NIET NULL-kolommen begrijpen
- Bestaande kolomgegevens ongedaan maken
- Wijzig de kolomgegevensstructuur
- Gewijzigde nullabiliteit verifiëren
De gegevensstructuur van een kolom in SQL Server wijzigen van NULL naar NOT NULL , waardoor niet-null-waarden in die kolom worden uitgesloten, wordt over het algemeen uitgevoerd met behulp van de relatief eenvoudige ALTER TABLE syntaxis om de betreffende kolom op de juiste manier te wijzigen.
In deze tutorial zullen we de belangrijke veiligheidsmaatregelen onderzoeken die nodig zijn bij het wijzigen van bestaande gegevens in een kolom, voordat er daadwerkelijk een ALTER . wordt uitgegeven commando's die mogelijk schade kunnen toebrengen aan de tafel zelf.
De beperkingen van gegevens in NIET NULL-kolommen begrijpen
Voordat er wijzigingen in uw tabel worden aangebracht, is het belangrijk om kort te bespreken welke gegevens wel (en niet) kunnen worden opgegeven in een bestaande kolom die u wilt wijzigen in NOT NULL , zodat geen enkele rij een NULL . mag hebben waarde in die kolom.
Het belangrijkste is dat alle bestaande NULL waarden in de kolom moeten worden bijgewerkt naar een niet-null-waarde vóór de ALTER commando kan met succes worden gebruikt en de kolom is gemaakt NOT NULL . Elke poging om de kolom in te stellen op NOT NULL terwijl de werkelijke NULL gegevens in de kolom blijven, resulteert in een fout en er vindt geen wijziging plaats.
Bestaande kolomgegevens ongedaan maken
Om ervoor te zorgen dat er geen NULL . zijn waarden in onze kolom, gebruiken we een eenvoudige UPDATE commando, expliciet van toepassing op rijen waar de waarde momenteel NULL is . We hebben bijvoorbeeld een basistabel van client gegevens met name , email , en phone . Momenteel hebben enkele records een NULL phone waarde, die we niet willen toestaan:
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
Daarom kunnen we een standaardwaarde invoegen voor alle phone waarden die momenteel NULL zijn met de volgende verklaring:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Nu onze NULL waarden zijn allemaal vervangen door de waarde die we beschouwen als de 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
Wijzig de kolomgegevensstructuur
Nu er geen NULL . zijn waarden niet langer, kunnen we onze ALTER statement om de kolom bij te werken zodat alle toekomstige toevoegingen NULL . niet toestaan waarden. Aangezien we de phone wijzigen kolom in dit voorbeeld, ziet het statement er ongeveer zo uit:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Gewijzigde nullabiliteit verifiëren
Nadat de wijziging in uw kolom is aangebracht, is het een goede gewoonte om te controleren of de kolom geen NULL meer toestaat. waarden door een eenvoudige INSERT test en probeer een nieuw record in te voegen met de NULL waarde in de gewijzigde kolom:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', 'jdoe@domain.com', NULL);
Als alles volgens plan is verlopen, geeft SQL Server een foutmelding dat de kolom NULL niet toestaat waarden:
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]