- Разбиране на ограниченията на данните в колони NOT NULL
- Отмяна на съществуващи данни в колона
- Променете структурата на данните в колоната
- Проверка на променената нулиране
Промяна на структурата на данните на колона в SQL Server от NULL
до NOT NULL
, като по този начин се забраняват ненулеви стойности в тази колона, обикновено се изпълнява с помощта на относително простия ALTER TABLE
синтаксис, за да промените по подходящ начин въпросната колона.
В този урок ще разгледаме важните предпазни мерки, необходими при промяна на съществуващи данни в колона, преди действително да издадете ALTER
команди, които потенциално биха причинили вреда на самата таблица.
Разбиране на ограниченията на данните в колони NOT NULL
Преди да бъдат направени каквито и да е промени във вашата таблица, важно е накратко да прегледате какви данни могат (и не могат) да бъдат посочени в съществуваща колона, която искате да промените на NOT NULL
, като се гарантира, че нито един ред не може да има NULL
стойност в тази колона.
Най-критичното е, че всички съществуващи NULL
стойности в колоната трябва се актуализира до стойност, различна от нула преди ALTER
командата може да се използва успешно и колоната да е NOT NULL
. Всеки опит за задаване на колоната на NOT NULL
докато действително NULL
данните, останали в колоната, ще доведат до грешка и няма да настъпи промяна.
Отмяна на данни за съществуващи колони
За да се гарантира, че няма NULL
стойности в нашата колона, ще използваме основен UPDATE
команда, приложима изрично към редове, където стойността в момента е NULL
. Например, имаме основна таблица на client
данни с name
, email
и phone
. Понастоящем някои от записите имат NULL
phone
стойност, която не искаме да допускаме:
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
Следователно можем да вмъкнем стойност по подразбиране за всички phone
стойности, които в момента са NULL
със следното изявление:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Сега нашият NULL
всички стойности са заменени със стойността, която считаме за 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
Промяна на структурата на данните в колоната
Сега, когато няма NULL
повече стойности, можем да издадем нашия ALTER
изявление за актуализиране на колоната, така че всички бъдещи допълнения да не позволяват NULL
стойности. Тъй като променяме phone
колона в този пример, изявлението ще изглежда така:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Проверка на променената нулиране
След като бъде направена промяната във вашата колона, добра практика е да се уверите, че колоната вече не позволява никакви NULL
стойности, като изпълните прост INSERT
тествате и се опитвате да вмъкнете нов запис с NULL
стойност в променената колона:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', '[email protected]', NULL);
Ако всичко вървеше по план, SQL Server ще издаде грешка, в която се посочва, че колоната не позволява NULL
стойности:
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]