SELECT TOP 15 IDENTITY(int, 1,1) AS ID_Num,表中原来的标识字段=cast(表中原来的标识字段 as int),其他字段
INTO #tmpRusultTable FROM Table1

解决方案 »

  1.   

    一个表只能有一个标识列
    eg:如下语句不能执行。
    create table tb1(id1 int identity(1,1), id2 int identity(1,1), aa varchar(10))
      
      

  2.   

    不能共存,一个表只能有一个identity列
      

  3.   

    创建和修改标识符列
    每个表中只能创建一个标识符列和一个全局唯一标识符列。IDENTITY 属性
    标识符列可用 IDENTITY 属性建立,使应用程序开发人员得以对表中所插入的第一行指定标识数字(Identity Seed 属性),并确定要添加到种子上的增量(Identity Increment 属性)以决定后面的标识数字。在向具有标识符列的表中插入值时,Microsoft® SQL Server™ 2000 通过递增种子值的方法自动生成下一个标识值。在用 IDENTITY 属性定义标识符列时应注意以下几点: 一个表只能有一列定义为 IDENTITY 属性,而且该列必须以 decimal、int、numeric、smallint、bigint 或 tinyint 数据类型定义。
    可指定种子和增量值。二者的默认值均为 1。
    标识符列不允许空值,也不能包含 DEFAULT 定义或对象。
    在设置 DENTITY 属性后,可以使用 IDENTITYCOL 关键字在选择表中引用该列。
    可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,使用 COLUMNPROPERTY 函数确定 IDENTITY 列的名称。
      

  4.   

    你可以用动态sql语句,这样也具有通用性.
      

  5.   

    --你可以用动态sql语句来解决--示例
    create table tb(id int identity(1,1),aa varchar(10))--生成临时表
    declare @s Nvarchar(4000)
    set @s='ID_Num=IDENTITY(int)'
    select @s=@s+',['+name+']'
    +case when status=0x80 then '=cast(['+name+'] as int)' else '' end
    from syscolumns
    where id=object_id('tb')
    exec('select '+@s+' into #t from tb 
    select * from #t')drop table tb--结果:ID_Num      id          aa         
    ----------- ----------- ----------