现在的表已经有很多数据了,能不能在不影响数据的情况下修改主键ID列为自增列,现在该表还没自增列!
解决方案 »
- 如何用SQL自动计算并更新某人的工作时间啊?
- 问一简单的查询语句
- getdate()的问题
- server 2008中的一个库坏了,sql正在自动修复,耗费io相当高,怎么把自动修复给停了
- 取第一个汉字前的所有字符(在线等)
- 不管是手动备份,还是自动备份,数据包都是一样大,这样的情况已经出现几天了!
- #### 求救两个SQL 语句 在线等待 ! ###
- 如何用语句修改某列为自增??
- 急!!! 装了一个新的SQL SERVER 2005,以前的数据库(也是2005,版本好像是pre-....)不能Attach
- 写一个存储过程从多个相似的表中提取数据!!
- 请问windows server2008 下可否安装sqlserver2000?
- 咨询一条SQL
CREATE TABLE t1(ID int IDENTITY,A int)
GO
--插入记录
INSERT t1 VALUES(1)
GO--1. 将IDENTITY(标识)列变为普通列
ALTER TABLE t1 ADD ID_temp int
GOUPDATE t1 SET ID_temp=ID
ALTER TABLE t1 DROP COLUMN ID
EXEC sp_rename N't1.ID_temp',N'ID',N'COLUMN'
INSERT t1 VALUES(100,9)
GO--2. 将普通列变为标识列
CREATE TABLE t1_temp(ID int,A int IDENTITY)
SET IDENTITY_INSERT t1_temp ON
INSERT t1_temp(ID,A) SELECT * FROM t1
SET IDENTITY_INSERT t1_temp OFF
DROP TABLE T1
GOEXEC sp_rename N't1_temp',N't1'
INSERT t1 VALUES(109999)
GO--显示处理结果
SELECT * FROM t1
/*--结果:
ID A
----------------- -----------
1 1
100 9
109999 10
--*/
select id from tems group by id having count(id)>1
如果没有,直接用企业管理器进行修改。
你可以建一個表T,里面存放所有表的MAXID,再寫個存儲過程,當新增行的時候,去表T里抓MAXID+1,那樣就可以實現自增了啊,又不會對以前的數據造成任何影響