将列更改为可为空

Ram*_*Ram 295 sql

我想将表列更改为可为空.我用过:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Run Code Online (Sandbox Code Playgroud)

这会给出错误Modify.什么是正确的语法?

Qua*_*noi 469

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

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
Run Code Online (Sandbox Code Playgroud)

替换INT为您的实际数据类型.

  • 尝试使用 SSMS 中的表“设计”实用程序将位列从 NOT NULL 更改为 NULL。我收到一个错误,表明需要删除并重新创建该表。哇!这种 ALTER TABLE 语法有效,并且比删除并重新创建表以使单个列可为空要容易得多。 (3认同)
  • @JohnH 大多数尝试使用设计器修改表都会导致该警告。您可以通过更改 SSMS 中的选项来解决此问题:/sf/ask/137836751/ saving-changes-after-table-edit-in-sql-server-management-studio (3认同)

Igo*_* S. 41

对于Oracle数据库10g用户:

alter table mytable modify(mycolumn null);
Run Code Online (Sandbox Code Playgroud)

如果不这样做,会得到"ORA-01735:无效的ALTER TABLE选项"

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
Run Code Online (Sandbox Code Playgroud)


djj*_*eck 38

如果这是MySQL语法,那么类型就会丢失,正如其他一些响应所指出的那样.正确的MySQL语法应该是:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL
Run Code Online (Sandbox Code Playgroud)

为了清楚MySQL用户,请在此处发布.


Pau*_*eau 26

在PostgresQL中它是:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Run Code Online (Sandbox Code Playgroud)


小智 13

对于 SQL Server 或 TSQL

ALTER TABLE Complaint.HelplineReturn ALTER COLUMN IsDisposed BIT NULL 
Run Code Online (Sandbox Code Playgroud)


Ham*_*ite 5

虽然我不知道您使用的是什么RDBMS,但您可能需要提供整个列规范,而不仅仅是说您现在希望它可以为空.例如,如果它是当前的INT NOT NULL,您应该发布ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.