我想将表列更改为可为空 . 我用过:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
这会在 Modify 处出错 . 什么是正确的语法?
Modify
正如其他人所观察到的,命令的精确语法因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>
对于Oracle数据库10g用户:
alter table mytable modify(mycolumn null);
如果不这样做,会得到“ORA-01735:无效的ALTER TABLE选项”
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
在PostgresQL中它是:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
对于HSQLDB:
ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
虽然我当前 INT NOT NULL ,但您应该发出 ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT .
INT NOT NULL
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
假设 SQL Server (基于您之前的问题):
SQL Server
ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
将 INT 替换为您的实际数据类型 .
INT
如果这是MySQL语法,那么类型就会丢失,正如其他一些响应所指出的那样 . 正确的MySQL语法应该是:
ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL
为了清楚MySQL用户,请在此处发布 .
7 回答
正如其他人所观察到的,命令的精确语法因DBMS的不同风格而异 . 您使用的语法适用于Oracle:
对于Oracle数据库10g用户:
如果不这样做,会得到“ORA-01735:无效的ALTER TABLE选项”
在PostgresQL中它是:
对于HSQLDB:
虽然我当前
INT NOT NULL
,但您应该发出ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.假设
SQL Server
(基于您之前的问题):将
INT
替换为您的实际数据类型 .如果这是MySQL语法,那么类型就会丢失,正如其他一些响应所指出的那样 . 正确的MySQL语法应该是:
为了清楚MySQL用户,请在此处发布 .