zoukankan      html  css  js  c++  java
  • SQL2005中使用identity_insert向自动增量字段中写入内

    摘自: http://www.aspbc.com/tech/showtech.asp?id=1117

    SQL2005以前的数据库是不允许向自动增量字段中写入内容的,ACCESS也不行,但在SQL2005开始,就可以向自动增量字段写入内容了,需要使用SQL2005提供的identity_insert来实现。
    
     功能:SQL2005中使用identity_insert来修改自动增量字段
     开发:wangsdong
    来源:www.aspbc.com
    原创文章,转载请保留此信息。
    
     一、复制旧表中的数量到新表中,保持ID不变
     假设要将某一表中的数据复制到另一表中去,但要保持ID不变。这个要求主要用于数据库分表,如由于用户表中数据量大,需要将一些很久不登录的用户放到另外一张表中去存放,以减少经常活动的表,以达到登录速度快。假设用户表USER结构:userid(自动增量字段),username,userpassword,LastLogintime,分表是OLD_USER表,结构也是userid(自动增量字段),username,userpassword,LastLogintime,使用的sql语句如下: 
    
    
    
    
    
    
    
    1 set identity_insert OLD_USER on 
    
    
    2 insert OLD_USER(userid,username,userpassword,LastLogintime) select userid,username,userpassword,LastLogintime from USER where LastLogintime<'2010-01-01' 
    
    
    3 set identity_insert OLD_USER off 
    (鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
    
    二、直接向新表中插入一条指定ID的记录
     这种情况下,这条指定的ID,新表中一定要没有才可以。假设表名OLD_USER表,结构也是userid(自动增量字段),username,userpassword,LastLogintime,使用的sql语句如下: 
    
    
    
    
    
    
    
    1 set identity_insert OLD_USER on 
    
    
    2 insert OLD_USER(userid,username,userpassword,LastLogintime) VALUES(7,'新用户','新密码','2012-04-09 08:30:30') 
    
    
    3 set identity_insert OLD_USER off 
    (鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
    这句中的7就是指定的自动增量字段useid的值。
    
     由于SQL2005新增加了这个功能,让分表就方便多了。
  • 相关阅读:
    读入优化
    poj 3216 Repairing Company
    poj 2594 Treasure Exploration
    poj 1419 Graph Coloring
    POJ 3308 Paratroopers(最小点权覆盖)(对数乘转加)
    bzoj2007: [Noi2010]海拔
    bzoj4552: [Tjoi2016&Heoi2016]排序
    bzoj1041: [HAOI2008]圆上的整点
    oracle 的服务器进程(PMON, SMON,CKPT,DBWn,LGWR,ARCn)
    undo表空间居高不下和enq: US
  • 原文地址:https://www.cnblogs.com/wuyifu/p/4304953.html
Copyright © 2011-2022 走看看