您的位置:首页 > 数据库

sqlserver如何在不删除原来内容的情况下修改修改id为自增(默认之前的id虽然不是自增但是实际是按序排列的)

2011-07-01 10:20 447 查看
如果之前设置好主键,但是没有设置主键为自动递增时,想要修改主键为自增同时又想保留原数据,先将修改方法整理如下:
环境:sqlServer2008
存在表Employee,其中id为主键
1.复制表结构:重新建表Employee_3,包含除id字段意外的所有字段
2.执行:alert table Employee_3 add id int identity(1,1)
3.打开自增插入字段set identity_insert Employee_t on
4.执行

insert into Employee_3(id,EmployeeCode,Name,EmployeeAccount,ActualName,IdCardNum,Sex,BirthDay,
NativePlace,Married,DocumentState,JoinTime,Center_Id,PositionDef_Id,PositionNumber,
Phone,MobilePhone,Email,FAX,DismissReason,BankName,BankBranch,AccountName,BankAccount,
Active,DismissDate,Remark,EmpType,EmpCode2,Reserve5,Reserve6,Reserve7,Reserve8,
Reserve9,Reserve10,BankName2,AccountName2,BankAccount2,JobTitleLevel,JobTitleConfirmTime,Nationality,
ConfirmDate,FamilyAddr,IdCardAddr,ContractTo,TrainingPeriod,ServiceYears,ResDocNum,
College,Major,MinorMajor,Degree,GraduateDate,JobTitle,ContractFrom,Reserve1,Reserve2,
Reserve3,Reserve4)select id,EmployeeCode,Name,EmployeeAccount,ActualName,IdCardNum,Sex,BirthDay,
NativePlace,Married,DocumentState,JoinTime,Center_Id,PositionDef_Id,PositionNumber,
Phone,MobilePhone,Email,FAX,DismissReason,BankName,BankBranch,AccountName,BankAccount,
Active,DismissDate,Remark,EmpType,EmpCode2,Reserve5,Reserve6,Reserve7,Reserve8,
Reserve9,Reserve10,BankName2,AccountName2,BankAccount2,JobTitleLevel,JobTitleConfirmTime,Nationality,
ConfirmDate,FamilyAddr,IdCardAddr,ContractTo,TrainingPeriod,ServiceYears,ResDocNum,
College,Major,MinorMajor,Degree,GraduateDate,JobTitle,ContractFrom,Reserve1,Reserve2,
Reserve3,Reserve4 from Employee

即将表结构全部一一复制过来,测试发现使用insert into Employee_3 select * from Employee时此处无效。

5.关闭自增插入:
set identity_insert Employee_t off
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐