Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana Anda menambahkan Kolom NOT NULL ke tabel besar di SQL Server?

Saya mengalami masalah ini untuk pekerjaan saya juga. Dan solusi saya adalah #2.

Berikut langkah-langkah saya (saya menggunakan SQL Server 2005):

1) Tambahkan kolom ke tabel dengan nilai default:

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

2) Tambahkan NOT NULL kendala dengan NOCHECK pilihan. NOCHECK tidak berlaku pada nilai yang ada:

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

3) Perbarui nilai secara bertahap dalam tabel:

GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
  • Pernyataan pembaruan hanya akan memperbarui maksimum 3000 catatan. Hal ini memungkinkan untuk menyimpan sepotong data pada saat itu. Saya harus menggunakan "MyColumn IS NULL" karena tabel saya tidak memiliki urutan primary key.

  • GO 1000 akan mengeksekusi pernyataan sebelumnya 1000 kali. Ini akan memperbarui 3 juta catatan, jika Anda membutuhkan lebih banyak, tambahkan saja jumlah ini. Ini akan terus dijalankan hingga SQL Server mengembalikan 0 catatan untuk pernyataan 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. Buat Server Tertaut Antara Dua Kontainer Docker yang menjalankan SQL Server (Contoh T-SQL)

  2. Baris yang dipisahkan koma SQL dengan klausa Group By

  3. Bagaimana Anda bisa memberi nama Tabel Dataset yang Anda kembalikan dalam proc tersimpan?

  4. Cara terbaik untuk melakukan logika pernyataan kasus bersarang di SQL Server

  5. Alat Manajemen SQL Server 2017