我想改变一个表列为空。我用过:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
这将在修改处给出一个错误。正确的语法是什么?
我想改变一个表列为空。我用过:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations 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>
其他回答
确保您添加了要修改的列的data_type。
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DATA_TYPE NULL;
这取决于你使用的SQL引擎,在Sybase中你的命令可以正常工作:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
在PostgresQL中是:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
对于HSQLDB:
ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
如果这是MySQL语法,类型就会丢失,就像其他一些响应指出的那样。 正确的MySQL语法应该是:
ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL
为了让MySQL用户更清楚,我在这里发帖。