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ì?
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ì?
Câu trả lời:
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;
Trong PostgresQL, đó là:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
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
.
Null
| NOT NULL
không được chỉ định, cột sẽ là nullable.
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>
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;
Đ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;
Oracle
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);
SQL_SCRIPT
đứng cho?