- 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 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
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 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
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', 'jdoe@domain.com', 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]