如何将一个表中个某一列修改为自动增长的

昨天有位学生问我“一个表已经建好了,能不能将里面的一个字段改为自动增长?”,“能,但没有必要去修改它,应该在建表的时候就设计好” 我说。 这时候他和另一位学生

讨论起来。他觉得可以,另一位试过说不行。因为他们不是我带班级的学生,他们也咨询了自己的老师,所以我没有再发表意见。

需求:

如何将一张表中个某一列修改为自动增长的。

解答:

1)  情景一:表中没有数据, 可以使用 drop column然后再add column

alter table 表名  drop column
列名

alter table表名  add列名  int identity(1,1)

2)  情景二:表中已经存在一部分数据

/****************
准备环境********************/

--判断是否存在test表

if object_id(N‘test‘,N‘U‘) is not null

drop table
test

--创建test表

create table test

(

id  int not null,

name varchar(20) not null

)

--插入临时数据

insert into test values (1,‘成龙‘)

insert into test values (3,‘章子怡‘)

insert into test values (4,‘刘若英‘)

insert into test values (8,‘王菲‘)

select * from test

/****************
实现更改自动增长列********************/

begin transaction

create table test_tmp

(

id int
not null  identity(1,1),

name varchar(20) not null

)

go

set identity_insert test_tmp on

go

if exists(select * from test)

exec(‘ insert into test_tmp(id,
name )  select id, name from test
with(holdlock tablockx)‘)

go

set identity_insert test_tmp off

go

drop  table test

go

exec  sp_rename N‘test_tmp‘ ,N‘test‘ , ‘OBJECT‘

go

commit

GO

/****************验证结果*****************/

insert into test values (‘张曼‘)

select * from test

总结:在表设计界面修改最为简单。如果该列已有的数据中存,修改可能会引发异常,可以使用数据导入导出的方式解决。总之,不管使用何种方式,都需求提前对数据做好备份。

时间: 2024-11-04 16:38:27

如何将一个表中个某一列修改为自动增长的的相关文章

SQL将一个表中的某一列值全部插入到另一个表中

1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=select col from b where a.id=b.id; 判断表是否存在数据库中,存在就删除 if exists (select * from Sysobjects where name='temp') begin drop table temp end

sql将一个表中的某一列数据更新到另一个表中

表1 table1 字段 id value 1 value1 2 value2 表2 table2 字段 id value 1 value3 2 value4 将表2中的value字段更新到表1中 SQL语句: update a set a.value=b.value from table1 a,table2 b where a.id=b.id

sql将一个表中的数据插入到另一个表中

列名不一定要相同,只要你在HH中列出要插入列的列表跟select   from   mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的. 比如: insert   into   hh   (fielda,fieldb,fieldc)   select   fieldx,fieldy,fieldz   from   mm ---更新计量点中不存在的数据,将台帐中的信息转移到计量点中 insert into MetricPoints (MeterID,MetricPointNa

Sql Server 在已知表中插入、删除、修改某一列操作

--1.向已有表中增加一列 ALTER TABLE TableName ADD ColumnName VARCHAR(20) NULL --2.删除表中的某一列 ALTER TABLE TableName DROP COLUMN ColumnName --3.修改某一列的数据类型 ALTER TABLE TableName ALTER COLUMN ColumnName INT 2.查询当年或者当月的数据 1.查询当年的数据 SELECT * FROM UserInfo WHERE YEAR(R

treeview自动从表中添加标题和列值做目录的方法2

treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首先界面上添加treeview组件,然后在treeview的onchange事件里这样写: 因为要用到定义个过程,需要在接口声明里引用 private { Private declarations } /// <summary> /// 刷新左侧treeView /// </summary&g

mysql将一个表中字段A的值赋给另一个表的字段B

# mysql 的修改方法 update table_a a inner join table_b b on b.id=a.id set a.description=b.content; # mssql的修改方法 update b set a.description=b.content from table_a a inner join table_b b on a.id=b.id; mysql将一个表中字段A的值赋给另一个表的字段B

在一个SQL Server表中的多个列找出最大值

在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) DROP TABLE ##TestTable CREATE TABLE ##TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(40), UpdateByApp1Date DATE

将数据库中的某一表中的某一列或者多列添加到另一张表的某一列中——猎八哥FLY

成绩表的字段:xueshenghao,yu,shu,yy均为int类型.新标与成绩表字段相同,不同的是成绩表中拥有数据,而新表中没有(是一张空表,一条数据都没有).需求:将成绩表中每一个人的yu,shu成绩添加到新表中.数据库版本mysql5.5.38. CREATE TABLE `chengjibiao` ( `xueshenghao` int(255) NOT NULL AUTO_INCREMENT, `yu` int(255) DEFAULT NULL, `shu` int(255) DE

SqlSever基础 脚本添加一个表中的两个列用逗号隔开

1 code 1 select * from sysdatabases 2 3 --指定添加列的数据库,helloworld 4 use helloworld 5 6 --创建表 表的名字 7 create table TeacherClass 8 ( 9 -- 列名 数据类型 不可为空 做主键 设置标识属性(种子,增长值) 列之间用逗号分开 10 Id int not null primary key identity(1,1) , 11 12 -- 列名 数据类型(有中国字,不确定长度) 1