[英]SQL Server ALTER COLUMN NOT NULL has no effect
表SOME_TABLE
的设计SOME_TABLE
没有定义主键,更糟糕的是,他们将可以将主键定义为NULLable的列中的一列设置了(其他都可以)。
SOME_TABLE.PrinterPos
的数据不包含任何NULL
值。
我正在编写一个升级脚本以应用于约50个数据库。
以下代码失败:
ALTER TABLE dbo.SOME_TABLE
ALTER COLUMN PrinterPos smallint NOT NULL;
ALTER TABLE dbo.SOME_TABLE
ADD CONSTRAINT PK_SOME_TABLE
PRIMARY KEY CLUSTERED (SOME_TABLE_ID ASC, Store_ID ASC, PrinterPos ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
我收到消息
无法在表“ SOME_TABLE”中的可为空的列上定义PRIMARY KEY约束。
看起来第一个命令被完全忽略了。 尽管没有消息表明这一点。
sp_executesql
执行第一个命令无效。 我需要使此更改完全自动化。 如何通过脚本使它起作用?
尝试在两个ALTER TABLE命令之间添加GO关键字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.