簡體   English   中英

SQL-運行多個ALTER查詢

[英]SQL - Running multiple ALTER queries

我在單個查詢中運行多個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)

一切似乎都正常。 我究竟做錯了什么? 謝謝!

在兩者之間添加GO (批處理分隔符)以解決問題

ALTER TABLE Book$
ALTER COLUMN PID INT NOT NULL

GO

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

如果沒有GO則整個腳本將被視為單個腳本

我不確定您使用的是哪個數據庫。 但是,要說明正在發生的情況,您需要了解語句處理的兩個階段:編譯和執行。

編譯階段讀取語句並定義執行計划。 然后執行階段將運行計划。 該表沒有任何變化,只是因為已編譯一條語句。

發生的事情是兩個語句被編譯然后執行。 編譯第二條語句后,什么都沒有改變(好,除了第一條語句的執行計划存儲在某個地方)。 因此,您遇到編譯錯誤。

當您分別運行兩者時,從第一個進行的更改然后在第二個進行的更改不會產生錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM