2016-04-27 30 views
0

讓我們考慮下列插入:如何在SQL Server內部插入選擇工作?

INSERT INTO SOMETABLE 
SELECT * FROM SOMETABLE 
WHERE Column > NUMBER 

是否有結果集SELECT語句是可以改變的,由於插入的危險嗎? 換句話說,SELECT語句可以通過查詢引擎計算多少次以執行INSERT INTO SELECT到同一個表中?

假設:沒有併發事務的單線程場景。

+4

否。插入操作是單個ACIDic操作。如果不存在,數據庫的整個概念將會出現大問題。 https://en.wikipedia.org/wiki/ACID –

+0

我認爲相同,但當我看到單行重複多次而不是一次時,我感到很驚訝。也許我有幻覺,我會再次檢查。 – tgrabus

+0

@grabus:你在使用連接嗎?將'INSERT'行註釋掉並運行'SELECT'部分來解決這樣的查詢是很方便的。這樣,您可以驗證您的'SELECT'語句是否拉入您期望的數據。我懷疑你有一個配置錯誤的連接或一些不好的數據。如果您希望插入唯一的記錄,「DISTINCT」可以幫助解決這個問題。 – Ellesedil

回答

0

由於插入操作,SELECT語句的結果集可以更改嗎?

否。SELECT聲明的結果集不受INSERT的影響。 SELECT的結果與您自己運行它的結果相同。