修改表:如何将"允许空值"属性从非null更改为允许为空

Cra*_*use 199 sql sql-server sql-server-2008

如何使用T-SQL更改表中的一个属性以允许空值(非null - > null)?可能会改变表吗?

Luk*_*keH 351

-- replace NVARCHAR(42) with the actual type of your column
ALTER TABLE your_table
ALTER COLUMN your_column NVARCHAR(42) NULL
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`ALTER TABLE your_table ALTER COLUMN your_column NVARCHAR(42)`因为如果没有明确指定,它将默认允许空值. (4认同)
  • 注意如果需要更改多个列以允许null,那么您将需要执行单独的`ALTER TABLE .. ALTER COLUMN ..`命令 (3认同)
  • 请注意,在某些情况下,这可能行不通-如果由于以下原因导致ALTER TABLE ALTER COLUMN失败,请参阅[此DBA Stack Exchange答案](https://dba.stackexchange.com/a/27293/158)。或更多对象访问此列。 (2认同)

Dan*_*llo 47

是的你可以使用ALTER TABLE如下:

ALTER TABLE [table name] ALTER COLUMN [column name] [data type] NULL
Run Code Online (Sandbox Code Playgroud)

引用ALTER TABLE文档:

NULL可以指定ALTER COLUMN强制NOT NULL列允许空值,但PRIMARY KEY约束中的列除外.


Ode*_*ded 22

ALTER TABLE是对的:

ALTER TABLE MyCustomers ALTER COLUMN CompanyName VARCHAR(20) NULL
Run Code Online (Sandbox Code Playgroud)

  • 您确定需要重新定义约束,而只需要重新定义数据类型吗?[MSDN文章](http://msdn.microsoft.com/en-us/library/ms190273.aspx)没有提到需要重新定义约束:"如果使用ALTER COLUMN指定NULL或NOT NULL,还必须指定new_data_type [(precision [,scale])].如果未更改数据类型,精度和比例,请指定当前列值." (2认同)

Vij*_*ana 5

对于MySQL,MariaDB

ALTER TABLE [table name] MODIFY COLUMN [column name] [data type] NULL
Run Code Online (Sandbox Code Playgroud)

使用MODIFY COLUMN代替ALTER COLUMN。