SQL-Server-2005数据库中设置自动编号字段实例解析 (sqlserver数据库)

教程大全 2025-07-07 23:04:46 浏览

SQL Server 2005 数据库中 设置自动编号字段 的相关知识是本文我们主要要介绍的内容,如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。

具有标识属性的列包含系统生成的连续值,该值***地标识表中的每一行(例如,雇员标识号)。在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符。

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

修改列的标识属性

例如,假设要为添加到 orders 表的每行自动生成 5 位 Order ID,从 10000 开始并且每次递增 10。为此,应在“标识种子”中键入 10000,在“标识增量”中键入 10。

如果更改表的任何标识属性,则将保留现有的标识值。新的设置值仅应用于添加到表中的新行。

注意: 如果频繁执行删除操作的表中存在标识列,则标识值之间会出现不连贯的情况。若要避免出现这种不连贯的情况,请不要使用标识属性。

当您在网格单元格外单击或使用Tab键移动到其他网格单元格后,“标识规范”属性的新值将赋给表设计器中的列。当您在表设计器中保存更改时,这些值将在数据库中生效。

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

说明:创建一个用户信息表UserInfor,并指定UserID为自动编号字段。

其中:IDENTITY(100,2)表示字段的初始值为100,每次增量为2,如输入数据后***次为100,第二次为102。

2.获取自动编号的字段值

这里可以使用@@IDENTITY取得自动增加字段主键的值

Alt="sqlserver数据库" src="https://www.kuidc.com/zdmsl_image/article/20250707230446_59614.jpg" loading="lazy">

(3)重新设置自动编号字段种子的起始值

如果用户将带有自动增加字段的表内容清空,由该字段的起始值将从原有的值开始增加,可以通过DBCC命令重新设置起始值。DBCC CHECKIDENT (UserInfor,RESEED,0),将UserInfor表的自动增加字段种子起始值设置为0,插入一条数据后自动字段的值为0+增量,如增量为1,则值为1。

右键你的表–>设计表–>找到你的id字段(类int型)–>标识–>是–>标识种子(初始值)–>标识递增量–>OK

关于SQL Server 2005数据库中设置自动编号字段的相关知识及实例解析就介绍到这里了,希望本次的介绍能够对您对您有所收获!

【编辑推荐】


SQL Server 2000中设计表时如何得到自动编号字段?

①像Access中的自动编号字段 右键你的表-->设计表-->找到你的id字段(类int型)-->标识-->是-->标识种子(初始值)-->标识递增量-->OK ②用IDENTITY (SEED,INCREMENT)参数 seed -启始值 increment -增量 CREATE TABLE 表名( 你的ID IDENTITY (1, 1) NOT NULL ,你的其他字段... ) CREATE TABLE 表名( 你的字段ID AUTOINCREMENT(1000,10),其他字段... ) ③修改起始值和步进值 ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(2000,50) ④让一个删空的表自动增加字段的开始值重新从1开始 ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(1,1) 2005-7-8后的内容 上述3 4只适用与Access,COUNTER为其一种数据类型,可以在Access中指定一不是自动编号的字段为自动编号字段,也可以让一自动编号字段重新从指定值按指定步长自动编号。 但是如果表中有数据,用户不能用该语句来将该列的数据类型改变为COUNTER 数据类型。 对于SQL Server并不支持。 对于SQL Server我们或许总希望用 Alter Table 表名 Alter Column 你的字段 IDENTITY(1,1) 来指定字段重新从1开始计数,但是这句话本身是错误的,好长时间我也疑惑为什么这句话不能执行。 如果我们看看MS 对Alter Table语句的定义就清楚了,这句话根本是错误的。 下面是MS对Alter Table语句的定义 ALTER TABLE table { [ ALTER COLUMN column_name { new_data_type [ ( precision [ , scale ] ) ] [ COLLATE < collation_name > ] [ NULL | NOT NULL ] | {ADD | DROP } ROWGUIDCOL } ] | ADD { [ < column_definition > ] | column_name AS computed_column_expression } [ ,...n ] | [ WITH CHECK | WITH NOCHECK ] ADD { < table_constraint > } [ ,...n ] | DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT { ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,...n ] } } < column_definition > ::= { column_name data_type } [ [ DEFAULT constant_expression ] [ WITH VALUES ] | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ] ] [ ROWGUIDCOL ] [ COLLATE < collation_name > ] [ < column_constraint > ] [ ...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTEred | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | [ [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) } < table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( column [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | DEFAULT constant_expression [ FOR column ] [ WITH VALUES ] | CHECK [ NOT FOR REPLICATION ] ( search_conditions ) } 可以看到,IDENTITY只是在< column_definition >中,也就是说,我们可以这样使用 Alter Table 表名 Add 字段名 Int IDENTITY(1,1) 即,我们可以增加一个字段并指定它为自动编号字段。 但是不能更改一个字段为自动编号字段(也或许我没找到方法)。 即,如果我们想给表增加自动编号字段,只能使用添加字段的方法,而不能更改一个已有的字段为自动编号字段。 至于如果需要更改自动编号字段计数起始值可以使用DBCC命令,下 DBCC CHECKIDENT (表名,RESEED,100) 自动编号字段下一个从101开始计。

关于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”。 然后在添加新记录时使用:select @number=max(number) from tablenameINSERT tablename(number) values(@number+1)------------------------以上使用SQL语句示范,假定你使用存储过程操作数据库,如果你使用ASP,就这样:psql=select max(number) as maxnumber from psql,conn,3,3maxnumber=rs(maxnumber)将最大number值读出,然后加1,再用于你的数据添加语句。 ------------------------这样就可以手动生成编号了,然后在删除记录的时候这样写程序: 假定要删除的记录编号为@ndelete tablename where number=@nupdate tablename set number=number-1 where number>@n这样就会在删除记录后重新整理编号顺序了。 同样是SQL语句示范,用ASP+SQL的代码就不写了,自己悟吧。

数据库的实际应用

ASP与数据库应用(给初学者)--------------------见最近许多网友询问一些关于数据库操作的基础问题,现把我以前写的一篇简单教程贴上来,好让一些初学者最快的入门:ASP与数据库应用(给初学者)一般来说,一个真正的、完整的站点是离不开数据库的,因为实际应用中,需要保存的数据很多,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。 数据库有很多种,如:Fox 数据库()、Access 数据库()、Informix、Oracle 和 SQL Server 等等,在这里,我将以 Microsoft Access 数据库为例来说明ASP是如何访问数据库的。 常用数据库语句 语句:命令数据库引擎从数据库里返回信息,作为一组记录。 INTO 语句:添加一个或多个记录至一个表。 语句:创建更新查询来改变基于特定准则的指定表中的字段值。 语句:创建一个删除查询把记录从 FROM 子句列出并符合 Where 子句的一个或更多的表中清除。 语句:用于激活 PROCEDURE(过程)用 ASP 来做一个自己的通讯录练练手吧……一、建立数据库:用 Microsoft Access 建立一个名为)方法2:Set conn = () Provider=.4.0;Data Source=&()注意:一个页面中,只要连接一次就可以了,数据库使用完后要及时关闭连接。 conn = Nothing三、添加新记录到数据库Set conn = () driver={Microsoft Access Driver (*)};dbq=&()username = 风云突变usermail = = Now()sql = insert into风云突变4.选择使用 163 信箱的所有记录(按查看次数排序):sql = select * )sql = select * )ID = 1usermail = = update&usermail& ) driver={Microsoft Access Driver (*)};dbq=&()ID = 1sql = delete fromdelete from data where ID in (ID1,ID2,ID3)删除所有记录为:sql = delete from data总结:以上教程是针对ASP的初学者而写的,只是介绍了一些基本的用法,在了解之后可以自己去试试,重要的在于能举一反三、综合运用。 更多的语法和参数请参阅 Microsoft Access 帮助中的 Microsoft Jet SQL 参考,由于本人才疏学浅、能力有限,如有表达不明确有地方还望指出,如果在应用当中遇到什么问题,也希望能够提出。 谢谢。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐