sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan ændres kolonne fra Null til Ikke Null i SQL Server-tabel - SQL Server / T-SQL vejledning del 52

Scenarie:

Du arbejder som SQL Server-udvikler hos en bank. De har Dbo.Customer-tabel i TechBrothersIT-databasen med nedenstå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 har bemærket, kan LastName være Null. Det er problemet. Virksomheden bemærkede det senere og vil altid have værdien for Efternavn. Du bliver bedt om at lave analyse og skrive Alter script for at ændre kolonne fra Null til Ikke Null. Hvilke ting vil du overveje eller forslag, du vil give?

Løsning:

Den allerførste ting at overveje i dette scenarie er at finde ud af, om der allerede er indsat værdier i tabellen for Efternavn som Null. Hvis det er tilfældet, kan du ikke rigtig gå videre og ændre kolonnen fra Null til Ikke Null. Hvis du prøver , vil du få fejlen under.
Besked 515, niveau 16, tilstand 2, linje 14Kan ikke indsætte værdien NULL i kolonnen 'Efternavn', tabel 'TechBrothersIT.dbo.Customer'; kolonne tillader ikke nuller. OPDATERING mislykkes.
Det betyder, at vi først skal behandle Null-værdier i denne kolonne. Du kan tale med erhvervslivet og spørge dem, hvad de gerne vil gøre for alle kunder, hvor Efternavn er Null. Du kan finde listen over kunder, hvor Efternavn er Null, ved at bruge nedenstående forespørgsel.
Select * From dbo.Customer
where LastName Is null
 Virksomheden kan give forskellige forslag, såsom Lad os opdatere efternavnet for at vide, hvor det er NullEller Opdater Efternavnet til tomt(''), hvis det er NullEller Opdater Efternavn-kolonnen til LNNP (Last Name Not Provided)Eller de går tilbage til kunder og få deres efternavn til at opdatere 
Afhængigt af forslagene skal du gå videre og opdatere værdierne i kolonnen Efternavn. Lad os sige, at vi besluttede at opdatere til tom '', vi kan bruge nedenstående forespørgsel til at opdatere
update dbo.Customer
set LastName=''
where LastName is Null
 
 Nu er du klar til at ændre kolonne i tabellen fra Null til Ikke Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null




  1. Sådan analyseres aktiviteten af ​​en database i SQL Server

  2. Tilslutning af Genero til SQL Server

  3. Sådan får du slutningen af ​​måneden i MariaDB

  4. FEJL 2002 (HY000):Kan ikke oprette forbindelse til den lokale MySQL-server via socket '/var/run/mysqld/mysqld.sock' (2)