Сценарий:
Вие работите като разработчик на SQL Server в банка. Те имат таблица Dbo.Customer в базата данни TechBrothersIT с дефиниция по-долу.Create Table dbo.Customer (FirstName VARCHAR(50) Not Null, LastName VARCHAR(50), Age SmallInt, PhoneNumber CHAR(9), DOB Date, Gender CHAR(1) )Както забелязахте, фамилното име може да бъде Null. Това е проблемът. Компанията забеляза това по-късно и винаги иска да има стойността за LastName. От вас се иска да направите анализ и да напишете Alter script, за да промените колоната от Null на Not Null. Какви неща ще обмислите или предложения, които ще предоставите?
Решение:
Първото нещо, което трябва да вземете предвид в този сценарий, е да разберете дали някакви стойности вече са вмъкнати в таблицата за фамилно име като нула. Ако случаят е такъв, не можете да продължите напред и да промените колоната от Null на Not Null. Ако опитате, ще получите грешка по-долу.Съобщение 515, ниво 16, състояние 2, ред 14 Не може да се вмъкне стойността NULL в колона 'LastName', таблица 'TechBrothersIT.dbo.Customer'; колоната не позволява нулеви стойности. UPDATE не успява.
Това означава, че първо трябва да се справим с Null стойности в тази колона. Можете да говорите с бизнеса и да ги попитате какво биха искали да направят за всички клиенти, при които фамилното име е нула. Можете да намерите списъка с клиенти, при които фамилното име е нула, като използвате заявката по-долу.
Select * From dbo.Customer where LastName Is nullБизнесът може да предостави различни предложения, като например Нека актуализираме фамилното име, за да не знае къде е Null или актуализиране на фамилното име до празно(''), ако е Null или актуализиране на колоната за фамилното име на LNNP (фамилното име не е предоставено) Или те се връщат към клиентите и вземете фамилното им име за актуализиране
В зависимост от предложенията, продължете и актуализирайте стойностите в колоната за фамилно име. Да кажем, че сме решили да актуализираме до празно '', можем да използваме заявката по-долу, за да актуализираме
update dbo.Customer set LastName='' where LastName is NullВече сте готови да промените колоната в таблицата от Null на Not Null.
Alter Table dbo.Customer Alter Column LastName VARCHAR(50) Not Null