将列更改为可空
我想改变一个表列是可空的。 我用过:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
这在Modify
会出现错误。 什么是正确的语法?
假设SQL Server
(根据您以前的问题):
ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
将INT
replace为您的实际数据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>