- Hiểu các giới hạn của dữ liệu trong các cột KHÔNG ĐẦY ĐỦ
- Bỏ hủy bỏ dữ liệu cột hiện có
- Thay đổi cấu trúc dữ liệu cột
- Xác minh khả năng vô hiệu đã thay đổi
Thay đổi cấu trúc dữ liệu của một cột trong SQL Server từ NULL
thành NOT NULL
, do đó không cho phép các giá trị không phải null trong cột đó, thường được thực hiện bằng cách sử dụng ALTER TABLE
tương đối đơn giản cú pháp để thay đổi cột được đề cập một cách thích hợp.
Trong hướng dẫn này, chúng tôi sẽ xem xét các biện pháp phòng ngừa an toàn quan trọng cần thiết khi thay đổi hiện có dữ liệu trong một cột, trước khi thực sự phát hành bất kỳ ALTER
nào các lệnh có thể gây hại cho chính bảng đó.
Hiểu Giới hạn của Dữ liệu trong các cột KHÔNG ĐẦY ĐỦ
Trước khi thực hiện bất kỳ thay đổi nào đối với bảng của bạn, điều quan trọng là phải xem qua dữ liệu nào có thể (và không thể) được chỉ định trong cột hiện có mà bạn muốn thay đổi thành NOT NULL
, đảm bảo rằng không hàng nào được phép có NULL
giá trị trong cột đó.
Quan trọng nhất, tất cả NULL
hiện có giá trị trong cột phải được cập nhật thành giá trị không rỗng trước ALTER
lệnh có thể được sử dụng thành công và cột được tạo NOT NULL
. Bất kỳ nỗ lực nào để đặt cột thành NOT NULL
trong khi NULL
thực tế dữ liệu vẫn còn trong cột sẽ dẫn đến lỗi và không có thay đổi nào xảy ra.
Hủy bỏ việc hủy bỏ Dữ liệu Cột Hiện tại
Để đảm bảo rằng không có NULL
trong cột của chúng tôi, chúng tôi sẽ sử dụng UPDATE
cơ bản , áp dụng rõ ràng cho các hàng có giá trị hiện là NULL
. Ví dụ:chúng tôi có một bảng cơ bản của client
dữ liệu với name
, email
và phone
. Hiện tại một số bản ghi có NULL
phone
giá trị mà chúng tôi không muốn cho phép:
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
Do đó, chúng tôi có thể chèn một giá trị mặc định cho tất cả phone
các giá trị hiện là NULL
với tuyên bố sau:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Bây giờ NULL
của chúng tôi tất cả các giá trị đã được thay thế bằng giá trị mà chúng tôi coi là 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
Thay đổi Cấu trúc Dữ liệu Cột
Bây giờ không có NULL
giá trị lâu hơn, chúng tôi có thể phát hành ALTER
của chúng tôi câu lệnh cập nhật cột để tất cả các bổ sung trong tương lai không cho phép NULL
các giá trị. Vì chúng tôi đang thay đổi phone
trong ví dụ này, câu lệnh sẽ trông giống như sau:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Xác minh khả năng vô hiệu đã thay đổi
Sau khi thay đổi cột của bạn được thực hiện, bạn nên xác minh rằng cột đó không còn cho phép bất kỳ NULL
nào nữa bằng cách chạy INSERT
đơn giản kiểm tra và cố gắng chèn một bản ghi mới với NULL
giá trị trong cột đã thay đổi:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', '[email protected]', NULL);
Nếu tất cả diễn ra theo đúng kế hoạch, SQL Server sẽ xuất hiện lỗi thông báo rằng cột không cho phép NULL
giá trị:
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]