2014-04-25 74 views
-1

我有一個表CMT_M_DISPOSITION (DispositionKey, DispositionValue)。 PK在DispositionKey。我希望在第一列中使用MAX(DispositionKey) + 1來插入新記錄。如何通過MAX(ID)+ 1在同一張表中插入新記錄

我得到一個錯誤

無效列DispositionKey

當我運行下面的代碼

任何人都可以解釋爲什麼我得到這個錯誤以及如何解決它?

SET IDENTITY_INSERT EY_CMT_TestV2..CMT_M_DISPOSITION ON 

Insert into CMT_M_DISPOSITION (DispositionKey, DispositionValue) 
values (MAX(DispositionKey) + 1, 'Newest') 

SET IDENTITY_INSERT EY_CMT_TestV2..CMT_M_DISPOSITION OFF 
+0

您試圖從INSERT中的表中選擇MAX(DispositionKey),這就是爲什麼它會拋出錯誤。雖然,我很好奇,爲什麼不讓ID自動增量? – Siyual

+0

'從CMT_M_DISPOSITION'插入到CMT_M_DISPOSITION(DispositionKey,DispositionValue)select(MAX(DispositionKey)+ 1,'Newest')? – KrazzyNefarious

+0

@BhupeshC(INSERT INTO .. SELECT)的註釋會成功執行插入操作,爲什麼我的insert語句失敗? –

回答

0
SET IDENTITY_INSERT EY_CMT_TestV2..CMT_M_DISPOSITION ON 

    Insert into CMT_M_DISPOSITION(DispositionKey,DispositionValue) select MAX(DispositionKey) + 1, 'Newest' from CMT_M_DISPOSITION 

SET IDENTITY_INSERT EY_CMT_TestV2..CMT_M_DISPOSITION OFF 

身份插件允許你插入顯式值(在這種情況下,INSERT INTO定義明確的價值... SELECT),因此需要在插入前必須接通。

+0

那麼基本是,如果你需要插入列數據你使用'insert select'語句 – KrazzyNefarious

相關問題