表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];
我收到了消息
无法在表格中对可空列定义PRIMARY KEY约束' SOME_TABLE'。
看起来第一个命令被完全忽略了。虽然没有消息表明这一点。
sp_executesql
执行第一个命令,但没有效果。我需要完全自动化这一变化。如何通过脚本使其工作?
答案 0 :(得分:0)
尝试在两个ALTER TABLE命令之间添加GO关键字