我有一個查詢,我需要「批」行插入到一個主鍵沒有身份的表中。T-SQL,在子查詢中使用MAX()+ 1插入不會增加替代項?
--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
FROM Customers
(簡化的示例 - 請不要對可能的併發性問題發表意見:-))
的問題是,它不會增加PK「爲每個」處理行,我獲得主鍵違規。
我知道如何用cursor/while循環來做到這一點,但我想避免這種情況,並以集合爲基礎的方式來解決它,如果這甚至是可能的?
(運行SQL Server 2008標準)
爲什麼你不把列設置爲標識列? – Chandu
+1 @Cybernate - 這是一個可怕的想法,如果你打算搜索SO,大約有20個類似這樣的問題,每個問題都告訴你爲什麼這是一個壞主意。 – JNK
長話短說:如果我能:-),我會做出一個身份。 @JNK我打擾了所有人,但這是我唯一的選擇,我想以最好的方式解決它。另外請記住我提供了一個簡化的例子。 – KorsG