[英]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.