Scénář:
Pracujete jako vývojář SQL Serveru s bankou. Mají tabulku Dbo.Customer v databázi TechBrothersIT s níže uvedenou definicí.Create Table dbo.Customer (FirstName VARCHAR(50) Not Null, LastName VARCHAR(50), Age SmallInt, PhoneNumber CHAR(9), DOB Date, Gender CHAR(1) )Jak jste si všimli, Příjmení může být Null. To je ten problém. Společnost si toho všimla později a vždy chtěla mít hodnotu příjmení. Budete požádáni, abyste provedli analýzu a napsali skript Alter pro změnu sloupce z Null na Not Null. Jaké věci budete zvažovat nebo návrhy, které poskytnete?
Řešení:
Úplně první věcí, kterou je v tomto scénáři třeba zvážit, je zjistit, zda jsou v tabulce pro Příjmení jako Null již vloženy nějaké hodnoty. Pokud je tomu tak, nemůžete skutečně pokračovat a sloupec Alter z Null na Not Null. Pokud to zkusíte, zobrazí se chyba níže.Msg 515, Level 16, State 2, Line 14Nelze vložit hodnotu NULL do sloupce 'LastName', tabulky 'TechBrothersIT.dbo.Customer'; sloupec nepovoluje hodnoty null. UPDATE se nezdaří.
To znamená, že se nejprve musíme vypořádat s hodnotami Null v tomto sloupci. Můžete si promluvit s obchodními partnery a zeptat se jich, co by chtěli udělat pro všechny zákazníky, kde je Last Name Null. Seznam zákazníků, kde je příjmení null, můžete najít pomocí níže uvedeného dotazu.
Select * From dbo.Customer where LastName Is nullFirma může poskytnout různé návrhy, jako je Aktualizujte Příjmení na Neznámé, kde je NullNebo Aktualizujte příjmení na prázdné (''), pokud je NullNebo Aktualizujte sloupec Příjmení na LNNP (Last Name Not Provided) Nebo se vrátí k zákazníkům a nechat aktualizovat jejich příjmení
V závislosti na návrzích pokračujte a aktualizujte hodnoty ve sloupci Příjmení. Řekněme, že jsme se rozhodli aktualizovat na prázdné '', můžeme použít níže uvedený dotaz k aktualizaci
update dbo.Customer set LastName='' where LastName is NullNyní jste připraveni změnit sloupec v tabulce z Null na Not Null.
Alter Table dbo.Customer Alter Column LastName VARCHAR(50) Not Null