sql >> Database >  >> RDS >> Sqlserver

Hoe voeg je een NOT NULL-kolom toe aan een grote tabel in SQL Server?

Ik kwam dit probleem ook tegen voor mijn werk. En mijn oplossing staat bij #2.

Dit zijn mijn stappen (ik gebruik SQL Server 2005):

1) Voeg de kolom toe aan de tabel met een standaardwaarde:

ALTER TABLE MyTable ADD MyColumn varchar(40) DEFAULT('')

2) Voeg een NOT NULL toe beperking met de NOCHECK optie. De NOCHECK dwingt niet af op bestaande waarden:

ALTER TABLE MyTable WITH NOCHECK
ADD CONSTRAINT MyColumn_NOTNULL CHECK (MyColumn IS NOT NULL)

3) Werk de waarden stapsgewijs bij in de tabel:

GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
  • De update-verklaring zal maximaal 3000 records bijwerken. Dit maakt het mogelijk om op dat moment een stuk gegevens op te slaan. Ik moet "MyColumn IS NULL" gebruiken omdat mijn tabel geen primaire volgordesleutel heeft.

  • GO 1000 voert de vorige instructie 1000 keer uit. Hiermee worden 3 miljoen records bijgewerkt, als u meer nodig heeft, verhoogt u dit aantal. Het wordt uitgevoerd totdat SQL Server 0 records retourneert voor de UPDATE-instructie.



  1. Een kolom hernoemen in MySQL

  2. Een databaseontwerper worden

  3. Verbind Metabase met MySQL voor gegevensverkenning

  4. Selecteer op een eenvoudige manier de rechterkolom als primaire sleutel voor een bepaalde tabel