Thay đổi một cột thành nullable


318

Tôi muốn thay đổi một cột bảng thành nullable. Tôi đã sử dụng:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Điều này cho một lỗi tại Modify. Cú pháp đúng là gì?


7
Vui lòng gửi thông báo lỗi trong tương lai
a'r

1
Tôi đã xóa thẻ SQL Server vì có vẻ như điều này đã trở thành miễn phí chung cho tất cả mọi người.
Martin Smith

Câu trả lời:


514

Giả sử SQL Server(dựa trên các câu hỏi trước của bạn):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Thay thế INTvới kiểu dữ liệu thực tế của bạn.


43

cho người dùng cơ sở dữ liệu Oracle 10g:

alter table mytable modify(mycolumn null);

Bạn nhận được "ORA-01735: tùy chọn ALTER TABLE không hợp lệ" khi bạn thử cách khác

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

Thật tuyệt, bạn không phải chỉ định loại dữ liệu, chỉ cần "null" để làm cho nó không có giá trị.
Gabe Halsmer

41

Nếu đây là cú pháp của MySQL, loại sẽ bị thiếu, vì một số phản hồi khác chỉ ra. Cú pháp đúng của MySQL sẽ là:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Đăng ở đây để rõ ràng cho người dùng MySQL.


29

Trong PostgresQL, đó là:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

Mặc dù tôi không biết RDBMS bạn đang sử dụng cái gì, nhưng có lẽ bạn cần cung cấp toàn bộ đặc tả cột, không chỉ nói rằng bây giờ bạn muốn nó là nullable. Ví dụ: nếu hiện tại INT NOT NULL, bạn nên phát hành ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Đây là một câu trả lời đúng và mô tả, vì vậy chỉ cần làm rõ nếu Null| NOT NULLkhông được chỉ định, cột sẽ là nullable.
Hamid Heydarian

4

Như những người khác đã quan sát, cú pháp chính xác cho lệnh thay đổi theo các hương vị khác nhau của DBMS. Cú pháp bạn sử dụng hoạt động trong 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>

0

Đối với HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Điều này sẽ làm việc cho bạn.

Nếu bạn muốn thay đổi một cột không null để cho phép null, không cần bao gồm mệnh đề không null. Bởi vì các cột mặc định không được null.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Điều này phụ thuộc vào SQL Engine bạn đang sử dụng, trong Sybase, lệnh của bạn hoạt động tốt:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oracle

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


Câu trả lời này có mang lại điều gì mới đối với câu trả lời của @ IgorS không? Và những gì SQL_SCRIPTđứng cho?
jpeg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.