Szenario:
Sie arbeiten als SQL Server Entwickler bei einer Bank. Sie haben eine Dbo.Customer-Tabelle in der TechBrothersIT-Datenbank mit der folgenden Definition.Create Table dbo.Customer (FirstName VARCHAR(50) Not Null, LastName VARCHAR(50), Age SmallInt, PhoneNumber CHAR(9), DOB Date, Gender CHAR(1) )Wie Sie bemerkt haben, kann LastName Null sein. Das ist das Problem. Das Unternehmen hat das später bemerkt und möchte immer den Wert für LastName haben. Sie werden gebeten, eine Analyse durchzuführen und ein Alter-Skript zu schreiben, um die Spalte von Null auf Not Null zu ändern. Welche Dinge werden Sie berücksichtigen oder Vorschläge machen?
Lösung:
Das allererste, was Sie in diesem Szenario berücksichtigen sollten, ist herauszufinden, ob in der Tabelle für den Nachnamen bereits Werte als Null eingefügt wurden. Wenn das der Fall ist, können Sie nicht wirklich fortfahren und die Spalte von Null auf Not Null ändern. Wenn Sie versuchen, erhalten Sie folgende Fehlermeldung.Msg 515, Ebene 16, Zustand 2, Zeile 14Der Wert NULL kann nicht in die Spalte „LastName“, Tabelle „TechBrothersIT.dbo.Customer“ eingefügt werden; Spalte erlaubt keine Nullen. UPDATE schlägt fehl.
Das bedeutet, dass wir uns zuerst mit Nullwerten in dieser Spalte befassen müssen. Sie können mit Unternehmen sprechen und sie fragen, was sie für alle Kunden tun möchten, bei denen der Nachname Null ist. Sie können die Liste der Kunden finden, bei denen der Nachname Null ist, indem Sie die folgende Abfrage verwenden.
Select * From dbo.Customer where LastName Is nullDas Unternehmen kann verschiedene Vorschläge machen, z. B. Aktualisieren Sie den Nachnamen auf Unbekannt, wo er Null ist, oder aktualisieren Sie den Nachnamen auf leer (''), wenn er Null ist, oder aktualisieren Sie die Spalte Nachname auf LNNP (Nachname nicht angegeben), oder sie gehen zurück zu den Kunden und erhalten ihren Nachnamen zum Aktualisieren
Je nach den Vorschlägen, fahren Sie fort und aktualisieren Sie die Werte in der Spalte Nachname. Angenommen, wir haben uns entschieden, auf ein leeres '' zu aktualisieren. Wir können die folgende Abfrage verwenden, um
update dbo.Customer set LastName='' where LastName is Nullzu aktualisieren Jetzt können Sie die Spalte in der Tabelle von Null in Not Null ändern.
Alter Table dbo.Customer Alter Column LastName VARCHAR(50) Not Null