注意:只能为不允许为空且数据类型为 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, )
你可以创建一个表格,并将其中的某一列(例如“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中文网其他相关文章!