Mengubah kolom menjadi nullable

318

Saya ingin mengubah kolom tabel menjadi nullable. Saya telah menggunakan:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Ini memberikan kesalahan pada Modify. Apa sintaks yang benar?

Ram
sumber
7
Silakan kirim pesan kesalahan di masa mendatang
a'r
1
Saya telah menghapus tag SQL Server karena sepertinya ini telah menjadi gratis secara umum untuk semua.
Martin Smith

Jawaban:

514

Dengan asumsi SQL Server(berdasarkan pertanyaan Anda sebelumnya):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Ganti INTdengan tipe data Anda yang sebenarnya.

Quassnoi
sumber
43

untuk pengguna Oracle Database 10g:

alter table mytable modify(mycolumn null);

Anda mendapatkan "ORA-01735: opsi ALTER TABLE tidak valid" ketika Anda mencoba sebaliknya

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
Igor S.
sumber
Keren, Anda tidak harus menentukan tipe data, cukup "null" untuk membuatnya nullable.
Gabe Halsmer
41

Jika ini adalah sintaks MySQL, jenisnya akan hilang, seperti yang ditunjukkan beberapa respons lainnya. Sintaks MySQL yang benar adalah:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Posting di sini untuk kejelasan kepada pengguna MySQL.

Djeck
sumber
29

Dalam PostgresQL itu adalah:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Paul LeBeau
sumber
5

Meskipun saya tidak tahu apa RDBMS yang Anda gunakan, Anda mungkin perlu memberikan spesifikasi kolom secara keseluruhan, tidak hanya mengatakan bahwa Anda sekarang ingin itu dapat dibatalkan. Misalnya, jika saat ini INT NOT NULL, Anda harus menerbitkan ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

Hammerite
sumber
Ini adalah jawaban yang benar dan deskriptif, jadi hanya mengklarifikasi jika Null| NOT NULLtidak ditentukan, kolom akan dibatalkan.
Hamid Heydarian
4

Seperti yang orang lain telah amati, sintaksis yang tepat untuk perintah bervariasi di berbagai rasa DBMS. Sintaks yang Anda gunakan berfungsi di Oracle:

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                      NOT NULL VARCHAR2(17)

SQL> alter table MACAddresses
  2       modify corrected_MACAddress null
  3  /

Table altered.

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                               VARCHAR2(17)

SQL>
APC
sumber
0

Untuk HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Libor B.
sumber
0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Ini akan bekerja untuk Anda.

Jika Anda ingin mengubah kolom bukan nol untuk mengizinkan nol, tidak perlu menyertakan bukan klausa nol. Karena kolom default bukan nol.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
chamzz.dot
sumber
0

Ini tergantung pada apa SQL Engine yang Anda gunakan, di Sybase perintah Anda berfungsi dengan baik:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;
ZORRO_BLANCO
sumber
0

Peramal

ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);

Rodrigo Itursarry
sumber
Apakah jawaban ini membawa sesuatu yang baru sehubungan dengan jawaban @ IgorS ? Dan apa artinya SQL_SCRIPT?
jpeg