Answers:
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
NOT NULL
则必须在查询中提及该列,否则它将NULL
默认设置为。 ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
alter table Employee alter column salary numeric(22,5)
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
如果运行时ALTER COLUMN
不提及属性,NOT NULL
则会导致该列更改为可为空(如果尚未创建)。因此,您需要首先检查该列是否可为空,如果不是,请指定attribute NOT NULL
。或者,您可以使用以下语句来预先检查列的可空性,并使用right属性运行命令。
IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NULL
有趣的方法可以在这里找到:spaghettidba,如何在不停机的情况下扩大色谱柱
如果您尝试使用直接的“ ALTER TABLE”命令来扩大此列,则必须等待SQLServer遍历所有行并写入新的数据类型
ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;
为了克服这种不便,您的表格可以使用一种神奇的列增大药,称为行压缩。(...)使用行压缩时,固定大小的列只能使用适合实际数据的最小数据类型所需的空间。
当表在ROW
级别上压缩时,则ALTER TABLE ALTER COLUMN
仅元数据操作。