表1中的a列、b列如下:
a b
20051233 12
20051233 254
20052512 21
20052642 455
20052314 5
20060001 11
20060002 14
20060003 17
20060004 18
第一个问题
现在我想把a列变成identity属性的标识列,可是a列中20060001以前的数据有重复,使转换出现了问题。现在这些数据(指20060001之前的数据)我可以不要,可以任意修改,可是我该怎样修改20060001以前的a列数据,以使a列可以转换成identity属性呢。
第二个问题
如果a列数据到了20069852,我想把下一个数据变成20070001,以后继续递增,我该怎么办。我用DBCC CHECKIDENT (Ta, RESEED, 20070000)对吗?这是不是唯一的方法或者是最好的方法?
a b
20051233 12
20051233 254
20052512 21
20052642 455
20052314 5
20060001 11
20060002 14
20060003 17
20060004 18
第一个问题
现在我想把a列变成identity属性的标识列,可是a列中20060001以前的数据有重复,使转换出现了问题。现在这些数据(指20060001之前的数据)我可以不要,可以任意修改,可是我该怎样修改20060001以前的a列数据,以使a列可以转换成identity属性呢。
第二个问题
如果a列数据到了20069852,我想把下一个数据变成20070001,以后继续递增,我该怎么办。我用DBCC CHECKIDENT (Ta, RESEED, 20070000)对吗?这是不是唯一的方法或者是最好的方法?
instead of inserted
AS
declare @a int
select @a=cast(max(a) as int)+1 from tb
if @a=20069852
insert into tb (a,b)
select '20070001',a.b from inserted a
else
insert into tb (a,b)
select cast(@a as nvarchar(100)),a.b from inserted a
还有第一个问题,这个是关键啊?难道一个要先把20060001以前的数据删除了再加工后,再导入回去吗?有没有就地加工的方法?以前的编号怎么处理都行,只要能转换成identity属性。