我在SQL SERVER2000数据库中手动建立了两个表TABLE1和TABLE2,两个表的字段及类型完全一样,并且我在两张表里都建立了一个字段名为ID,并且设这个字段的标识为“是”,标识种子为“1”,标识递增量为"1",类型为INT,长度为4,并为主键。
我运行
Cn.Execute "DELETE FROM TABLE1"
Cn.Execute "INSERT INTO TABLE2 SELECT * FROM TABLE1"
时,到第二句时报错,报错内容如题,请问该如何解决。但要实现我这两张表中自动编号的主键ID。

解决方案 »

  1.   

    不好意思写错了,应该是
    Cn.Execute "DELETE FROM TABLE2"
    Cn.Execute "INSERT INTO TABLE2 SELECT * FROM TABLE1"
    请高手指教
      

  2.   

    Cn.Execute "INSERT INTO TABLE2 SELECT * FROM TABLE1"不要用*,改成不包含ID的其它字段行不?
      

  3.   

    很矛盾,你这样做很容易造成标识字段混乱/重复而导致错误的,如果一定要这样做,试试:
    一般来说,表的IDENTITY_INSERT属性缺省为off,所以解决方法有二:1.上面 ljhdi()兄说的方法 ,这种情况下是可以的,就是说缺省情况应该将除标识以外所有的字段都对应赋值插入不能只对几个字段赋值插入。2.先打开表的IDENTITY_INSERT属性:
    Cn.Execute "Set IDENTITY_INSERT Table2 ON"
    Cn.Execute "DELETE FROM TABLE2"
    Cn.Execute "INSERT INTO TABLE2 SELECT * FROM TABLE1"
    Cn.Execute "Set IDENTITY_INSERT Table2 Off"
    这样也是可以的 实现标识字段的显式插入 但标识的自增长就无效了。再说一次:你这样做很容易造成标识字段混乱/重复而导致错误的
    如果能避免的话尽量用别的方法.