如何通过同一个表的MAX(ID)+ 1在表中插入新记录

时间:2014-04-25 20:55:17

标签: sql sql-server insert max identity

我有一张桌子CMT_M_DISPOSITION (DispositionKey, DispositionValue)。 PK在DispositionKey上。我希望使用MAX(DispositionKey) + 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

1 个答案:

答案 0 :(得分: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中定义的显式值),因此需要在插入之前将其打开。