0
表SOME_TABLE
的設計者沒有定義主鍵,更糟的是,他們設置了一個可以將主鍵定義爲NULLable(其他都可以)的列。SQL Server ALTER COLUMN NOT NULL不起作用
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
執行第一個命令沒有任何效果。 - 如果我在SQL Server Management Studio中執行第一個命令,然後執行第二個命令,那麼它將執行OK。
我需要讓這個改變完全自動化。我怎樣才能通過腳本得到這個工作?
嘗試增加兩個ALTER TABLE之間的GO關鍵字命令@Sparky說 – Sparky
什麼(他應該做這樣的正式答案) –
對不起,我沒有做它清除腳本實際上是一個存儲過程,所以GO無效。 –