Tình huống:
Bạn đang làm việc với tư cách là nhà phát triển SQL Server với một Ngân hàng. Họ có bảng Dbo.Customer trong cơ sở dữ liệu TechBrothersIT với định nghĩa bên dưới.Tạo bảng dbo.Customer (FirstName VARCHAR (50) Not Null, LastName VARCHAR (50), Age SmallInt, PhoneNumber CHAR ( 9), Ngày DOB, CHAR giới tính (1))
Như bạn nhận thấy rằng LastName có thể là Null. Đó là vấn đề. Công ty nhận thấy điều đó sau này và luôn muốn LastName có giá trị. Bạn được yêu cầu thực hiện phân tích và viết tập lệnh Alter để Thay đổi Cột từ Null thành Not Null. Những điều bạn sẽ cân nhắc hoặc những đề xuất mà bạn sẽ cung cấp?
Giải pháp:
Điều đầu tiên cần xem xét trong trường hợp này là tìm xem có giá trị nào đã được chèn vào bảng cho Last Name as Null hay không. Nếu đúng như vậy, bạn không thể thực sự tiếp tục và thay đổi cột từ Null thành Not Null. Nếu cố gắng, bạn sẽ gặp lỗi dưới đây.Msg 515, Level 16, State 2, Line 14Không thể chèn giá trị NULL vào cột 'LastName', bảng 'TechBrothersIT.dbo.Customer'; cột không cho phép null. CẬP NHẬT không thành công.
Điều đó có nghĩa là chúng ta phải xử lý các giá trị Null trong cột này trước tiên. Bạn có thể nói chuyện với doanh nghiệp và hỏi họ muốn làm gì cho tất cả khách hàng có Họ là Null. Bạn có thể tìm thấy danh sách khách hàng có Họ là Null bằng cách sử dụng truy vấn dưới đây.
Chọn * Từ dbo.Doanh nghiệp có thể đưa ra các đề xuất khác nhau, chẳng hạn như Cập nhật LastName thành Unknow ở đâu NullO hoặc Cập nhật Last Name để trống ('') nếu là NullO hoặc Cập nhật cột Last Name thành LNNP (Last Name Not Provided) Hoặc họ quay lại với khách hàng và lấy Họ của họ để cập nhật
Tùy thuộc vào các đề xuất, hãy tiếp tục và cập nhật các giá trị trong cột Họ. Giả sử chúng tôi quyết định cập nhật thành trống '', chúng tôi có thể sử dụng truy vấn bên dưới để cập nhật
update dbo.Customerset LastName ='' trong đó LastName là NullBây giờ bạn đã sẵn sàng để thay đổi cột trong bảng từ Null thành Not Null.
Alter Table dbo.CustomerAlter Column LastName VARCHAR (50) Not Null