繁体   English   中英

SQL Server ALTER COLUMN NOT NULL无效

[英]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约束。

看起来第一个命令被完全忽略了。 尽管没有消息表明这一点。

  1. 为了将其放入自己的批处理中,我尝试使用sp_executesql执行第一个命令无效。
  2. 如果我先在SQL Server Management Studio中执行第一个命令,然后再执行第二个命令,那么它将执行“确定”。

我需要使此更改完全自动化。 如何通过脚本使它起作用?

尝试在两个ALTER TABLE命令之间添加GO关键字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM