如何在SQL Server 2008中实现自动编号?

王林
发布: 2024-01-09 20:38:08
转载
582 人浏览过

sql server 2008怎么自动编号

注意:只能为不允许为空且数据类型为 decimal、int、numeric、smallint、bigint 或 tinyint 的列设置标识属性。此外,主键列不能设置标识属性。

一。通过SQL管理工具修改列的标识属性

1. 在对象资源管理器中,右键单击要更改其数据类型的列所在的表,再单击“修改”。这样,该表会在表设计器中被打开。

2.清除要更改的列的“允许空”复选框。

3.在“列属性”选项卡中,展开“标识规范”属性。

4.单击“是标识”子属性的网格单元格,然后从下拉列表中选择“是”。

5. 在"标识种子"单元格里输入数值。这个数值将会分配给表格的第一行。默认情况下,这个数值会是1。

6. 在"标识增量"单元格中键入数值。该数值是基于"标识种子"逐行递增的增量。默认情况下,增量被设置为1。

二。SQL语句来创建

创建表时指定自动编号的字段

CREATE TABLE [dbo].[UserInfor](

[UserID] [int] IDENTITY(100,2) NOT NULL, --此处可指定初始值和递增步长

[UserName] [nchar](10) NOT NULL, )

关于sql server自动编号问题

你可以创建一个表格,并将其中的某一列(例如“ID”)的“标识列”属性设置为“是”,然后设置其种子(初始值)和递增量。例如,如果你将种子设置为1,递增量设置为1(默认设置),那么生成的ID序列将会是:1、2、3、4、……

在记录数量不是特别多(大于1000万条)时,这个值是唯一的,也就是不会出现两者相同的情况。

但这样会有一个问题,比如你顺序生成了10条记录:

1、2、3、4、5、6、7、8、9、10

然后你删除了3号记录,这样剩下的记录就是:

1、2、4、5、6、7、8、9、10

如果你希望编号是从1开始逐渐递增,中间不隔断的话,你可以设定另一个非标识列,比如"number"。在添加新记录时,你可以使用以下方法:

在查询语句中,你可以使用以下语句来选择表中number列的最大值: SELECT @number = MAX(number) FROM tablename

insert into tablename(number) values(@number+1)

------------------------

以上是使用SQL语句示范,但假设你使用存储过程来操作数据库。如果你使用ASP语言,你可以按照以下方式进行操作:

psql = "SELECT MAX(number) AS maxnumber FROM tablename"

rs.open psql,conn,3,3

maxnumber=rs("maxnumber")

将最大number值读出,然后加1,再用于你的数据添加语句。

------------------------

这样就可以手动生成编号了,然后在删除记录的时候这样写程序:

' 假定要删除的记录编号为@n

delete tablename where number=@n

更新表名为tablename的记录,将number字段的值减1,但只有当number大于参数@n的值时才进行更新。

这样做之后,我们就能重新整理编号顺序,删除记录并且重新编号。同样的,我也可以给你展示一段SQL语句示范,但是这次用ASP+SQL的代码就不再提供了,请自行参考和理解。

以上是如何在SQL Server 2008中实现自动编号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:docexcel.net
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!