- Zrozumienie ograniczeń danych w kolumnach NOT NULL
- Anulowanie istniejących danych kolumny
- Zmień strukturę danych kolumny
- Zweryfikuj zmienioną nieważność
Zmiana struktury danych kolumny w SQL Server z NULL na NOT NULL , uniemożliwiając w ten sposób wartości inne niż null w tej kolumnie, jest zwykle wykonywane przy użyciu stosunkowo prostej ALTER TABLE składnię, aby odpowiednio zmienić daną kolumnę.
W tym samouczku przeanalizujemy ważne środki ostrożności niezbędne podczas modyfikowania istniejących dane w kolumnie, przed faktycznym wydaniem jakiejkolwiek ALTER polecenia, które mogłyby spowodować uszkodzenie samego stołu.
Zrozumienie ograniczeń danych w kolumnach NOT NULL
Zanim jakiekolwiek zmiany zostaną wprowadzone do Twojej tabeli, ważne jest, aby krótko przejrzeć, jakie dane można (i nie można) określić w istniejącej kolumnie, którą chcesz zmienić na NOT NULL , upewniając się, że żaden wiersz nie może mieć NULL wartość w tej kolumnie.
Co najważniejsze, wszystkie istniejące NULL wartości w kolumnie muszą być aktualizowane do wartości innej niż null przed ALTER polecenie może być pomyślnie użyte, a kolumna wykonana NOT NULL . Każda próba ustawienia kolumny na NOT NULL podczas gdy rzeczywisty NULL dane pozostające w kolumnie spowodują błąd i nie nastąpią żadne zmiany.
Anulowanie istniejących danych kolumny
Aby upewnić się, że nie ma NULL wartości w naszej kolumnie, użyjemy podstawowej UPDATE polecenie, stosowane jawnie do wierszy, w których wartość jest aktualnie NULL . Na przykład mamy podstawową tabelę client dane z name , email i phone . Obecnie kilka rekordów ma wartość NULL phone wartość, na którą nie chcemy pozwolić:
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
Dlatego możemy wstawić domyślną wartość dla wszystkich phone wartości, które są obecnie NULL z następującym stwierdzeniem:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Teraz nasz NULL wszystkie wartości zostały zastąpione wartościami, które uważamy za 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
Zmień strukturę danych kolumny
Teraz, gdy nie ma NULL wartości dłużej, możemy wydać nasze ALTER oświadczenie, aby zaktualizować kolumnę, aby wszystkie przyszłe dodatki nie zezwalały na NULL wartości. Ponieważ zmieniamy phone w tym przykładzie, instrukcja będzie wyglądać mniej więcej tak:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Weryfikuj zmienioną nieważność
Po dokonaniu zmiany w Twojej kolumnie, dobrą praktyką jest sprawdzenie, czy kolumna nie zezwala już na żadne NULL wartości, uruchamiając proste INSERT test i próba wstawienia nowego rekordu z NULL wartość w zmienionej kolumnie:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', 'jdoe@domain.com', NULL);
Jeśli wszystko poszło zgodnie z planem, SQL Server wyświetli błąd informujący, że kolumna nie zezwala na NULL wartości:
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]