sql >> Database >  >> RDS >> Sqlserver

Een kolom wijzigen van Null naar Niet Null in SQL Server

  • De beperkingen van gegevens in NIET NULL-kolommen begrijpen
    • Bestaande kolomgegevens ongedaan maken
  • Wijzig de kolomgegevensstructuur
    • Gewijzigde nullabiliteit verifiëren

De gegevensstructuur van een kolom in SQL Server wijzigen van NULL naar NOT NULL , waardoor niet-null-waarden in die kolom worden uitgesloten, wordt over het algemeen uitgevoerd met behulp van de relatief eenvoudige ALTER TABLE syntaxis om de betreffende kolom op de juiste manier te wijzigen.

In deze tutorial zullen we de belangrijke veiligheidsmaatregelen onderzoeken die nodig zijn bij het wijzigen van bestaande gegevens in een kolom, voordat er daadwerkelijk een ALTER . wordt uitgegeven commando's die mogelijk schade kunnen toebrengen aan de tafel zelf.

De beperkingen van gegevens in NIET NULL-kolommen begrijpen

Voordat er wijzigingen in uw tabel worden aangebracht, is het belangrijk om kort te bespreken welke gegevens wel (en niet) kunnen worden opgegeven in een bestaande kolom die u wilt wijzigen in NOT NULL , zodat geen enkele rij een NULL . mag hebben waarde in die kolom.

Het belangrijkste is dat alle bestaande NULL waarden in de kolom moeten worden bijgewerkt naar een niet-null-waarde vóór de ALTER commando kan met succes worden gebruikt en de kolom is gemaakt NOT NULL . Elke poging om de kolom in te stellen op NOT NULL terwijl de werkelijke NULL gegevens in de kolom blijven, resulteert in een fout en er vindt geen wijziging plaats.

Bestaande kolomgegevens ongedaan maken

Om ervoor te zorgen dat er geen NULL . zijn waarden in onze kolom, gebruiken we een eenvoudige UPDATE commando, expliciet van toepassing op rijen waar de waarde momenteel NULL is . We hebben bijvoorbeeld een basistabel van client gegevens met name , email , en phone . Momenteel hebben enkele records een NULL phone waarde, die we niet willen toestaan:

clientsID     name              email                                         phone
1             Neville Estes     [email protected]                         1-843-863-2697
2             Flynn Fry         [email protected]
3             Wyatt Schmidt     [email protected]                          1-950-895-1847
4             Oleg Hill         [email protected]        1-173-344-1578
5             Randall Bullock   [email protected]
6             Lamar White       [email protected]                              1-421-757-4907
7             Fuller Hill       [email protected]                        1-178-437-8281
8             Ulysses Boyle     [email protected]   1-535-515-1494
9             Paki Palmer       [email protected]
10            Kamal Buchanan    [email protected]           1-325-847-4838

Daarom kunnen we een standaardwaarde invoegen voor alle phone waarden die momenteel NULL zijn met de volgende verklaring:

UPDATE
  clients
SET
  phone = '0-000-000-0000'
WHERE
  phone IS NULL;

Nu onze NULL waarden zijn allemaal vervangen door de waarde die we beschouwen als de default , 0-000-000-0000 :

clientsID   name            email                                       phone
1           Neville Estes   [email protected]                       1-843-863-2697
2           Flynn Fry       [email protected]                          0-000-000-0000
3           Wyatt Schmidt   [email protected]                        1-950-895-1847
4           Oleg Hill       [email protected]      1-173-344-1578
5           Randall Bullock [email protected]                                0-000-000-0000
6           Lamar White     [email protected]                            1-421-757-4907
7           Fuller Hill     [email protected]                      1-178-437-8281
8           Ulysses Boyle   [email protected] 1-535-515-1494
9           Paki Palmer     [email protected]                             0-000-000-0000
10          Kamal Buchanan  [email protected]         1-325-847-4838

Wijzig de kolomgegevensstructuur

Nu er geen NULL . zijn waarden niet langer, kunnen we onze ALTER statement om de kolom bij te werken zodat alle toekomstige toevoegingen NULL . niet toestaan waarden. Aangezien we de phone wijzigen kolom in dit voorbeeld, ziet het statement er ongeveer zo uit:

ALTER TABLE
  clients
ALTER COLUMN
  phone
    NVARCHAR(20) NOT NULL;

Gewijzigde nullabiliteit verifiëren

Nadat de wijziging in uw kolom is aangebracht, is het een goede gewoonte om te controleren of de kolom geen NULL meer toestaat. waarden door een eenvoudige INSERT test en probeer een nieuw record in te voegen met de NULL waarde in de gewijzigde kolom:

INSERT INTO
  clients(name, email, phone)
VALUES
  ('John Doe', '[email protected]', NULL);

Als alles volgens plan is verlopen, geeft SQL Server een foutmelding dat de kolom NULL niet toestaat waarden:

Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]

  1. Hoe vind ik de MySQL my.cnf-locatie

  2. Fout 404 niet gevonden met EM 12c

  3. Een tijdelijke tabel maken in SQL Server

  4. Geen SPU meer