2016-12-26 139 views
1

我在單個查詢中運行多個ALTER命令時遇到問題。SQL - 運行多個ALTER查詢

每當我嘗試運行下面的代碼:

ALTER TABLE Book$ 
ALTER COLUMN PID INT NOT NULL 

ALTER TABLE Book$ 
ADD CONSTRAINT pk_book PRIMARY KEY(PID) 

我得到一個錯誤:

Cannot define PRIMARY KEY constraint on nullable column in table 'Book$'. 

但是,如果我單獨運行的查詢,第一:

ALTER TABLE Book$ 
ALTER COLUMN PID INT NOT NULL 

而且那麼:

ALTER TABLE Book$ 
ADD CONSTRAINT pk_book PRIMARY KEY(PID) 

一切似乎工作得很好。 我在做什麼錯?謝謝!

+0

我刪除了不兼容的數據庫標籤。請標記您真正使用的數據庫。 –

+0

在sql server中,我能夠在一個批處理中一起運行兩個查詢 – TheGameiswar

回答

2

之間來解決這個問題

ALTER TABLE Book$ 
ALTER COLUMN PID INT NOT NULL 

GO 

ALTER TABLE Book$ 
ADD CONSTRAINT pk_book PRIMARY KEY(PID) 

添加GO(批次分隔)在不GO整個腳本將被視爲單個腳本

0

我不知道你正在使用的數據庫。爲了解釋發生了什麼,您需要理解語句處理的兩個階段:編譯和執行。

編譯階段讀取語句並定義執行計劃。執行階段然後運行計劃。表格的任何內容都不會因爲編譯語句而改變。

發生了什麼是兩個語句被編譯,然後執行。當第二個被編譯時,沒有任何改變(當然,除了第一個語句的執行計劃存儲在某處)。因此,您會收到彙編錯誤。

當您分別運行兩個時,第一次發生的更改發生,然後第二次發生錯誤。