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.