我想将表列更改为可为空。 我用过:
ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations NULL
这会在Modify处给出错误。 正确的语法是什么?
请以后发布错误消息
我已经删除了SQL Server标记,因为它看起来已成为所有人的免费通用标记。
假设SQL Server(基于您之前的问题):
ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
将INT替换为您的实际数据类型。
是的,这对我有用。关注数据类型
对于Oracle数据库10g用户:
ALTER TABLE mytable MODIFY(mycolumn NULL);
否则,您会收到" ORA-01735:无效的ALTER TABLE选项"
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
太酷了,您不必指定数据类型,只需指定" null"即可使其成为可空值。
如果这是MySQL语法,则其他一些响应指出,该类型将丢失。
正确的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。
这是一个正确的描述性答案,因此只需澄清一下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;
对于HSQLDB:
ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
在甲骨文
ALTER TABLE Merchant_Pending_Functions MODIFY(SQL_SCRIPT NOT NULL);
这个答案是否对@IgorSs答案带来了新的变化? SQL_SCRIPT代表什么?