Answers:
尽管我不知道您使用的是什么RDBMS,但您可能需要给出整个列的说明,而不仅仅是说您现在希望它可以为空。例如,如果当前为INT NOT NULL
,则应发出ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
。
Null
| NOT NULL
未指定,则该列将为空。
正如其他人所观察到的,该命令的精确语法在不同类型的DBMS中有所不同。您使用的语法在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;
这将为您工作。
如果要更改一个非空列以允许为空,则无需包含非空子句。因为默认列不为空。
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
这取决于您使用的是哪种SQL引擎,在Sybase中,您的命令可以正常工作:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
甲骨文
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);