sql >> Databáze >  >> RDS >> Sqlserver

Jak přidáte sloupec NOT NULL do velké tabulky na serveru SQL?

Narazil jsem na tento problém pro svou práci také. A moje řešení je podél #2.

Zde jsou mé kroky (používám SQL Server 2005):

1) Přidejte sloupec do tabulky s výchozí hodnotou:

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

2) Přidejte NOT NULL omezení pomocí NOCHECK volba. NOCHECK nevynucuje na existujících hodnotách:

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

3) Aktualizujte hodnoty postupně v tabulce:

GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
  • Aktualizační prohlášení aktualizuje pouze maximálně 3000 záznamů. To umožňuje současně uložit velké množství dat. Musím použít "MyColumn IS NULL", protože moje tabulka nemá sekvenční primární klíč.

  • GO 1000 provede předchozí příkaz 1000krát. Tím se aktualizují 3 miliony záznamů, pokud potřebujete více, zvyšte toto číslo. Bude pokračovat, dokud SQL Server nevrátí 0 záznamů pro příkaz UPDATE.



  1. Vícepříkazové TVF v Dynamics CRM

  2. Jak integrovat Oracle a Kafka

  3. Použití Excel VBA ke spuštění SQL dotazu

  4. SQL Server - Dynamická PIVOT tabulka - SQL Injection