Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać kolumnę NOT NULL do dużej tabeli w SQL Server?

Z tym problemem spotkałem się również w mojej pracy. A moje rozwiązanie jest w punkcie 2.

Oto moje kroki (używam SQL Server 2005):

1) Dodaj kolumnę do tabeli z wartością domyślną:

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

2) Dodaj NOT NULL ograniczenie z NOCHECK opcja. NOCHECK nie wymusza na istniejących wartościach:

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

3) Zaktualizuj wartości stopniowo w tabeli:

GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
  • Oświadczenie o aktualizacji zaktualizuje maksymalnie 3000 rekordów. Pozwala to na zapisanie porcji danych w tym samym czasie. Muszę użyć „MyColumn IS NULL”, ponieważ moja tabela nie ma klucza podstawowego sekwencji.

  • GO 1000 wykona poprzednią instrukcję 1000 razy. To zaktualizuje 3 miliony rekordów, jeśli potrzebujesz więcej, zwiększ tę liczbę. Będzie kontynuowane, dopóki SQL Server nie zwróci 0 rekordów dla instrukcji UPDATE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PARSE() vs CAST() vs CONVERT() w SQL Server:jaka jest różnica?

  2. Implementacja wyszukiwania pełnotekstowego w SQL Server 2016 dla początkujących

  3. Co to jest PROFIL STATYSTYKI w SQL Server?

  4. Czy istnieje program SQL Server Profiler dla programu SQL Server Express?

  5. Jak opróżnić bufor PRINT w TSQL?