Pertanyaan Mengubah kolom: null menjadi tidak null


Saya memiliki tabel yang memiliki beberapa kolom bilangan bulat nullable. Ini tidak diinginkan karena beberapa alasan, jadi saya mencari untuk memperbarui semua nol ke 0 dan kemudian mengatur kolom ini NOT NULL. Selain mengubah nol ke 0, data harus dilestarikan.

Saya mencari sintaks SQL spesifik untuk mengubah kolom (sebut saja ColumnA) ke "not null". Asumsikan data telah diperbarui untuk tidak mengandung null.

Menggunakan Server SQL 2000.


1023
2018-03-27 13:24


asal


Jawaban:


Pertama, buat semua nilai NULL saat ini menghilang:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Kemudian, perbarui definisi tabel untuk melarang NULL:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

1732
2018-03-27 13:30



Saya memiliki masalah yang sama, tetapi bidang yang digunakan untuk default ke null, dan sekarang saya ingin default ke 0. Yang diperlukan menambahkan satu baris lagi setelah solusi mdb:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

47
2018-06-15 20:45



Anda harus melakukannya dalam dua langkah:

  1. Perbarui tabel sehingga tidak ada bilangan nol di kolom.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. Ubah tabel untuk mengubah properti kolom
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

29
2018-03-27 13:34



Untuk Oracle 11g, saya dapat mengubah atribut kolom sebagai berikut:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

Kalau tidak, jawaban abatichev sepertinya bagus. Anda tidak dapat mengulang alter - itu mengeluh (setidaknya di SQL Developer) bahwa kolom tersebut sudah tidak null.


21
2017-09-17 21:13



Asalkan kolom itu bukan pengenal unik

UPDATE table set columnName = 0 where columnName is null

Kemudian

Ubah tabel dan atur bidang ke non null dan tentukan nilai default 0


16
2018-03-27 13:26



ini berhasil untuk saya:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

15
2018-06-05 13:00



ini tampak lebih sederhana, tetapi hanya bekerja pada Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

Selain itu, dengan ini, Anda juga dapat menambahkan kolom, bukan hanya mengubahnya. Ini memperbarui ke nilai default (0) dalam contoh ini, jika nilainya nol.


5
2018-03-04 07:55



Dalam kasus FOREIGN KEY CONSTRAINT... akan ada masalah jika '0' tidak ada di kolom tabel kunci Primer. Solusinya adalah ...

LANGKAH 1:

Nonaktifkan semua batasan menggunakan kode ini:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

LANGKAH 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

STEP3:

Aktifkan semua batasan menggunakan kode ini:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

2
2017-11-27 17:13



Dalam kasus saya, saya mengalami kesulitan dengan jawaban yang diposting. Saya akhirnya menggunakan yang berikut:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

Perubahan VARCHAR(200) ke datatype Anda, dan secara opsional mengubah nilai default.

Jika Anda tidak memiliki nilai default, Anda akan mengalami masalah saat membuat perubahan ini, karena default-nya tidak akan menciptakan konflik.


2
2018-01-26 19:39



Membuat kolom tidak null dan menambahkan default juga bisa dilakukan di SSMS GUI.

  1. Seperti yang telah dinyatakan orang lain, Anda tidak dapat menetapkan "tidak nol" sampai semua data yang ada "tidak null" seperti:

UPDATE myTable SET myColumn = 0

  1. Setelah selesai, dengan tampilan tabel di desain (klik kanan pada tabel dan klik "tampilan desain"), Anda dapat menghapus centang pada Mengizinkan Nulls kolom seperti ini:

enter image description here

  1. Masih dalam tampilan desain dengan kolom yang dipilih, Anda dapat melihat Properti Kolom pada jendela di bawah ini dan atur default ke 0 di sana juga seperti ini:

enter image description here


1
2017-12-15 03:14