sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ändrar kolumn från Null till Not Null i SQL Server-tabellen - SQL Server / T-SQL självstudie del 52

Scenario:

Du arbetar som SQL Server-utvecklare med en bank. De har Dbo.Customer-tabellen i TechBrothersIT-databasen med nedanstående definition.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Som du märkte att LastName kan vara Null. Det är problemet. Företaget märkte det senare och vill alltid ha värdet för Efternamn. Du ombeds att göra analys och skriva Alter script för att ändra kolumn från Null till Not Null. Vilka saker kommer du att överväga eller förslag du kommer att ge?

Lösning:

Det allra första att tänka på i det här scenariot är att ta reda på om några värden redan har infogats i tabellen för Efternamn som null. Om så är fallet kan du inte gå vidare och ändra kolumnen från Null till Not Null. Om du försöker får du under felet.
Msg 515, Level 16, State 2, Rad 14Kan inte infoga värdet NULL i kolumnen 'LastName', tabellen 'TechBrothersIT.dbo.Customer'; kolumnen tillåter inte nollor. UPPDATERING misslyckas.
Det betyder att vi måste ta itu med Null-värden i den här kolumnen först. Du kan prata med företag och fråga dem vad de skulle vilja göra för alla kunder där efternamnet är null. Du kan hitta listan över kunder där Efternamn är Null genom att använda sökfrågan nedan.
Select * From dbo.Customer
where LastName Is null
 Företag kan ge olika förslag som t.ex. Låt oss uppdatera efternamnet för att okända var det är NullEller uppdatera efternamnet till tomt('') om det är NullEller uppdatera kolumnen Efternamn till LNNP (Efternamn ej tillhandahållet)Eller så går de tillbaka till kunder och få deras efternamn att uppdatera 
Beroende på förslagen, fortsätt och uppdatera värdena i kolumnen Efternamn. Låt oss säga att vi bestämde oss för att uppdatera till tom '', vi kan använda nedanstående fråga för att uppdatera
update dbo.Customer
set LastName=''
where LastName is Null
 
 Nu är du redo att ändra kolumn i tabellen från Null till Not Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null




  1. Hur ersätter man specifika värden i en Oracle-databaskolumn?

  2. Hur man distribuerar Percona Distribution för PostgreSQL för hög tillgänglighet

  3. Om användbarheten av uttrycksindex

  4. Begränsande returnerad post från SQL-fråga i Oracle