表A,里面已经存在数据,现在需要add one coloumn as not nullALTER TABLE db_name.dbo.A ADD Flag tinyint not null; 报错,说是没有default的设置, 后来改成先ALTER TABLE db_name.dbo.A ADD Flag tinyint null; 成功了,然后update db_name.dbo.A set Flag = 1; 再ALTER TABLE db_name.dbo.A ALTER COLUMN Flag set not null; 还是报错Incorrect syntax near the keyword 'set'.请教高手
ALTER TABLE db_name.dbo.A ALTER COLUMN Flag set Flag is not null
ALTER TABLE TB ADD CONSTRAINT DF_TB_Col DEFAULT (0) FOR Col
如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必须同时指定 new_data_type [(precision [, scale ])]。如果不更改数据类型、精度和小数位数,请指定列的这些值的当前值。
ALTER TABLE db_name.dbo.A ADD Flag tinyint null; 成功了,然后 update db_name.dbo.A set Flag = 1; 再 ALTER TABLE db_name.dbo.A ALTER COLUMN Flag set not null;-----
直接这样就行了。ALTER TABLE db_name.dbo.A ADD Flag tinyint default(1) not null
ALTER COLUMN [ type_schema_name. ] type_name [ ( { precision [ , scale ] | max |xml_schema_collection } ) ]
[ NULL | NOT NULL ] ;
--not null和default要同时加ALTER TABLE db_name.dbo.A ADD Flag tinyint not null default(1);
alter table db_name.dbo.A drop column flag
go
--你如果是后来添加不为null字段,必须要设缺省值,不设的话,肯定会违反不为NULL的约束,所以会报错。
ALTER TABLE db_name.dbo.A ADD Flag tinyint default(0) not null
6F,
ALTER TABLE db_name.dbo.A ADD Flag tinyint default(1) not null
这样还是报错
Incorrect syntax near the keyword 'COLUMN'.