insert  #temp  select * from cards==>
insert #temp(列名列表) select * from cards

解决方案 »

  1.   

    当临时表中包含自增长的字段时,怎么能够实现类似如下的语法:
    insert  #temp  select * from cards
    当然#temp  的表结构与cards的表结构是一样的
      

  2.   

    在语法中指定了列名如: insert  #temp (列名列表) 不能实现我所要的功能, 要求具有一定的通用性,如何能够通过SET  IDENTITY_INSERT  #temp  ON 去解决?
      

  3.   

    另外如何确定 #temp  是否包含了标识属性的字段,因为当表不存在标识属性的字段时执行SET  IDENTITY_INSERT  #temp  ON 会产生错误如:表 'alleyways' 没有标识属性。无法执行 SET 操作。
      

  4.   

    insert  #temp  select * from cards==>
    insert #temp(插入的把列名) select 查询的列名 from cards必须要显示的把列名写出来,否则会出错。这是sql 的规定
      

  5.   

    --建立測試環境
    CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
    GO
    -- Inserting values into products table. 向表中插入測試數據
    INSERT INTO products (product) VALUES ('screwdriver')
    INSERT INTO products (product) VALUES ('hammer')
    INSERT INTO products (product) VALUES ('saw')
    INSERT INTO products (product) VALUES ('shovel')
    -- 增除數據留縫隙
    DELETE products 
    WHERE product = 'saw'
    GO
    SELECT * 
    FROM products
    --此時插入數據會出錯。被中斷
    INSERT INTO products (id, product) VALUES(3, 'garden shovel')
    --Attempt to insert an explicit ID value of 3  將成功
    SET IDENTITY_INSERT products ON
    GO
    INSERT INTO products (id, product) VALUES(3, 'garden shovel')
    GO
    SELECT * 
    FROM products
    GO
    -- Drop products table.
    DROP TABLE products
    SET IDENTITY_INSERT products OFF
      

  6.   

    麻烦看清楚哦!我需要的是临时表如何实现,直接使用表名我也知道啊.另外如楼上所说:insert  #temp  select * from cards==>
    insert #temp(插入的把列名) select 查询的列名 from cards必须要显示的把列名写出来,否则会出错。这是sql 的规定一定要指定列名,那请问一下,如果我事先并不知道表结构,不知道列名,你叫我如何写呢?
      

  7.   

    另外谁说的"必须要显示的把列名写出来,否则会出错。这是sql 的规定
    "你去试试啊
      

  8.   

    1.  使用set identity_insert    select  top  0  *  into  #temp  from  cards
     
        SET  IDENTITY_INSERT  #temp  ON      
        insert  #temp(字段列表.........)  
        select * from cards
        SET  IDENTITY_INSERT  #temp  OFF2.  去掉identity属性    select  top  0  convert(int,标识字段),其他字段........  
        into  #temp  
        from  cards
          
        insert  #temp select * from cards
      

  9.   

    又要保留标识字段,又不想在语句中出现字段名
    并且在临时表里有没有必要保留标识字段的标识属性,那就去掉标识属性,看来这能这样了
    可惜sql语句中没有提供去掉标识属性这个功能,只好象楼上那样曲线救国了
      

  10.   

    1.  使用set identity_insert    select  top  0  *  into  #temp  from  cards
     
        SET  IDENTITY_INSERT  #temp  ON      
        insert  #temp(字段列表.........)  
        select * from cards
        SET  IDENTITY_INSERT  #temp  OFF这样是不行的哦!因为对临时表 SET  IDENTITY_INSERT  #temp  ON  是会执行错误的!  
      

  11.   

    既然是临时表,就没必要设置identity了
      

  12.   

    我也遇到了这个问题
    select identity(int,1,1) as RowId,* into t2 from t1如果T1中已有IDENTITY列就会出错,有什么解决办法??