将列更改为可空

我想改变一个表列是可空的。 我用过:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL 

这在Modify会出现错误。 什么是正确的语法?

假设SQL Server (根据您以前的问题):

 ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL 

INTreplace为您的实际数据types。

对于Oracle数据库10g用户:

 alter table mytable modify(mycolumn null); 

否则,您会得到“ORA-01735:无效的ALTER TABLE选项”

 ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL; 

如果这是MySQL语法,则types将会丢失,正如其他一些响应指出的那样。 正确的MySQL语法应该是:

 ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL 

为了清晰起见,在这里发布给MySQL用户。

在PostgresQL中是这样的:

 ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL; 

虽然我不知道你正在使用的是什么RDBMS,但你可能需要给出整个列的规范,而不是说你现在希望它是可空的。 例如,如果它当前是INT NOT NULL ,则应该发出ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT

正如其他人所观察到的,命令的精确语法随着不同风格的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>