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

Cara Mengubah Kolom dari Null menjadi Tidak Null di SQL Server

  • Memahami Keterbatasan Data pada Kolom NOT NULL
    • Membatalkan Penghapusan Data Kolom yang Ada
  • Mengubah Struktur Data Kolom
    • Verifikasi Nullability yang Diubah

Mengubah struktur data kolom di SQL Server dari NULL ke NOT NULL , dengan demikian melarang nilai non-null di kolom itu, umumnya dilakukan menggunakan ALTER TABLE yang relatif sederhana sintaks untuk mengubah kolom yang dimaksud dengan tepat.

Dalam tutorial ini kita akan memeriksa tindakan pencegahan keamanan penting yang diperlukan saat mengubah yang sudah ada data dalam kolom, sebelum benar-benar mengeluarkan ALTER perintah yang berpotensi menyebabkan kerusakan pada tabel itu sendiri.

Memahami Batasan Data di Kolom NOT NULL

Sebelum perubahan dilakukan pada tabel Anda, penting untuk membahas secara singkat data apa yang dapat (dan tidak dapat) ditentukan dalam kolom yang ada yang ingin Anda ubah menjadi NOT NULL , memastikan bahwa tidak ada baris yang diizinkan memiliki NULL nilai di kolom itu.

Yang paling penting, semua NULL yang ada nilai dalam kolom harus diperbarui ke nilai bukan nol sebelum ALTER perintah dapat berhasil digunakan dan kolom dibuat NOT NULL . Setiap upaya untuk menyetel kolom ke NOT NULL sementara sebenarnya NULL data tetap di kolom akan menghasilkan kesalahan dan tidak akan terjadi perubahan.

Membatalkan Penghapusan Data Kolom yang Ada

Untuk memastikan tidak ada NULL nilai di kolom kami, kami akan menggunakan UPDATE dasar perintah, berlaku secara eksplisit untuk baris di mana nilainya saat ini NULL . Misalnya, kami memiliki tabel dasar client data dengan name , email , dan phone . Saat ini beberapa catatan memiliki NULL phone nilai, yang tidak ingin kami izinkan:

clientsID     name              email                                         phone
1             Neville Estes     [email protected]                         1-843-863-2697
2             Flynn Fry         [email protected]
3             Wyatt Schmidt     [email protected]                          1-950-895-1847
4             Oleg Hill         [email protected]        1-173-344-1578
5             Randall Bullock   [email protected]
6             Lamar White       [email protected]                              1-421-757-4907
7             Fuller Hill       [email protected]                        1-178-437-8281
8             Ulysses Boyle     [email protected]   1-535-515-1494
9             Paki Palmer       [email protected]
10            Kamal Buchanan    [email protected]           1-325-847-4838

Oleh karena itu, kita dapat memasukkan nilai default untuk semua phone nilai yang saat ini NULL dengan pernyataan berikut:

UPDATE
  clients
SET
  phone = '0-000-000-0000'
WHERE
  phone IS NULL;

Sekarang NULL . kami semua nilai telah diganti dengan nilai yang kami anggap sebagai default , 0-000-000-0000 :

clientsID   name            email                                       phone
1           Neville Estes   [email protected]                       1-843-863-2697
2           Flynn Fry       [email protected]                          0-000-000-0000
3           Wyatt Schmidt   [email protected]                        1-950-895-1847
4           Oleg Hill       [email protected]      1-173-344-1578
5           Randall Bullock [email protected]                                0-000-000-0000
6           Lamar White     [email protected]                            1-421-757-4907
7           Fuller Hill     [email protected]                      1-178-437-8281
8           Ulysses Boyle   [email protected] 1-535-515-1494
9           Paki Palmer     [email protected]                             0-000-000-0000
10          Kamal Buchanan  [email protected]         1-325-847-4838

Mengubah Struktur Data Kolom

Sekarang tidak ada NULL nilai lagi, kami dapat mengeluarkan ALTER pernyataan untuk memperbarui kolom sehingga semua penambahan di masa mendatang tidak mengizinkan NULL nilai-nilai. Karena kami mengubah phone kolom dalam contoh ini, pernyataan akan terlihat seperti ini:

ALTER TABLE
  clients
ALTER COLUMN
  phone
    NVARCHAR(20) NOT NULL;

Verifikasi Nullability yang Diubah

Setelah perubahan pada kolom Anda dibuat, praktik yang baik adalah memverifikasi bahwa kolom tidak lagi mengizinkan NULL nilai dengan menjalankan INSERT simple sederhana menguji dan mencoba memasukkan catatan baru dengan NULL nilai di kolom yang diubah:

INSERT INTO
  clients(name, email, phone)
VALUES
  ('John Doe', '[email protected]', NULL);

Jika semua berjalan sesuai rencana, SQL Server akan mengeluarkan kesalahan yang menyatakan bahwa kolom tidak mengizinkan NULL nilai:

Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengecilkan Database SQL Server saya?

  2. Dukungan SQL Server 2008 Berakhir. Sekarang Apa?

  3. Apa itu Logis DAN Operator di SQL Server - Tutorial SQL Server / TSQL Bagian 120

  4. PIVOT di sql 2005

  5. Jalankan SERVERPROPERTY() Terhadap Server Tertaut di SQL Server