zoukankan      html  css  js  c++  java
  • SQL中将某列改为自动增长类型

      如何在原ID列不是自动增长列设为 自动增长列,并保留原ID列数据的通用办法:

    1) 建立 一中间表,只有Id 自增长类型,和一其他类型列?
    Create table tz (ID counter,tmpI integer)--Access
         Create table tz (ID int identity ,tmpI int)--SQL Server

    2) 获得原表的ID列的最大值,向中间表填入记录直到记录数大于原ID列的最大值
    select max(ID) from oldTable
    insert into tz( max(ID))

    3)将中间表与原表左连接,取中间表ID列,原表其他列,插入一临时表tmp
    select tz.id, MyTable.otherCol  into tmp
    from tz left outer join MyTable on tz.id=MyTable.id

    4)因为自动增长列是从1开始,若有指向小于1的记录要特殊处理:'用原ID列中不存在(不连续的)项代替'
    select * from tmp
    update tmp set parent=17  where parent=0

    5) 删除空余的行
    delete from tmp where name is null

    6)删除原表,将临时表重命名为原表名
    drop table MyTable   
    EXEC   sp_rename   tmp,  MyTable
  • 相关阅读:
    struts1.X的jar包
    struts2.1.6所需jar包详解
    hibernate的运行原理
    hibernate的save()方法详解
    flash的动态加载技术
    havok之内存管理
    worker中加载本地文件报错的解决方案
    行为树之我见
    havok之thread和memory system
    havok之collision detection
  • 原文地址:https://www.cnblogs.com/tulater/p/1318236.html
Copyright © 2011-2022 走看看