- 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 [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
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 [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
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', '[email protected]', 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]