当前位置: 首页 > 编程笔记 >

SQL server 2005中设置自动编号字段的方法

濮冠宇
2023-03-14
本文向大家介绍SQL server 2005中设置自动编号字段的方法,包括了SQL server 2005中设置自动编号字段的方法的使用技巧和注意事项,需要的朋友参考一下

如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。
具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号)。在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符。

注意:

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

修改列的标识属性

1.在对象资源管理器中,右键单击要更改其数据类型的列所在的表,再单击“修改”。此时,将在表设计器中打开该表。
2.清除要更改的列的“允许空”复选框。
3.在“列属性”选项卡中,展开“标识规范”属性。
4.单击“是标识”子属性的网格单元格,然后从下拉列表中选择“是”。
5.在“标识种子”单元格中键入值。此值将赋给表中的第一行。默认情况下将赋值 1。
6.在“标识增量”单元格中键入值。此值是基于“标识种子”依次为每个后续行增加的增量。默认情况下将赋值 1。

例如,假设要为添加到 orders 表的每行自动生成 5 位 Order ID,从 10000 开始并且每次递增 10。为此,应在“标识种子”中键入 10000,在“标识增量”中键入 10。
如果更改表的任何标识属性,则将保留现有的标识值。新的设置值仅应用于添加到表中的新行。

注意:

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

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

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

CREATE TABLE [dbo].[UserInfor](
 [UserID] [int] IDENTITY(100,2) NOT NULL,
 [UserName] [nchar](10) NOT NULL,
) 

说明:创建一个用户信息表UserInfor,并指定UserID为自动编号字段。
其中:IDENTITY(100,2)表示字段的初始值为100,每次增量为2,如输入数据后第一次为100,第二次为102。

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

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

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

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

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

create table mytest 
( 
id int primary key identity(1,1),--主键,自动+1 
name varchar(20) unique not null,--不允许重复,不允许为空 
Age tinyint, 
notetime smalldatetime default getdate() 
) 

insert into mytest values ('张三',20,getdate()) 
insert into mytest (name,age)values ('李四',20) 
 类似资料:
  • 问题内容: 我有一个带有两个表的SQL Server 2008数据库。第一个表称为Department。第二个表称为票证。这两个表的定义如下: 我正在尝试找出一种动态更新Department.TotalTickets值的方法。当添加或删除工单时,我想自动增加或减少TotalTickets的值。有人可以告诉我在SQL Server 2008上执行此操作的最佳方法吗? 谢谢 问题答案: 有多种方法可以

  • 问题内容: 我有一条语句将数据从一个表复制到另一个表。 但问题是,第二个表中的AutoNumber列值从第一个表中的最后一个数字开始。 这意味着第一个表的计数是2000,然后,第二个表从2001开始。 使用Access数据库时,如何重设此值? 问题答案: 您可以从ADO执行Access DDL语句以重置自动编号种子值。这是立即窗口会话的示例: 该语句必须从ADO执行。如果您使用DAO(例如)或通过

  • 问题内容: 我有一个VB6 / Access应用程序,偶尔会遇到错误的自动编号字段种子问题。 可以说有一个具有自动编号字段ID(也是主键)的表MYTABLE。可以说,当前ID的最大值为1000。当应用程序插入新记录(未明确提供ID值)时,由于某种原因,它决定下一个自动编号字段值为950(而不是应为1001)。 )-因此发生主键冲突错误。 我找到了一篇描述我的症状的知识库文章:http : //su

  • 本文向大家介绍PHP连接SQLServer2005的方法,包括了PHP连接SQLServer2005的方法的使用技巧和注意事项,需要的朋友参考一下 1.修改php.ini将extension=php_mssql.dll的注释删除保存。 修改php.in将mssql.secure_connection = Off改为mssql.secure_connection = On。 2.下载连接2005的n

  • 问题内容: 如何为欧姆对象动态设置字段? 问题答案: 中的class方法为命名属性定义访问器和更改器方法: 因此,当您说时,您可以免费获得以下方法: 您可以像这样调用mutator方法: 如果您真的想说,那么可以在课堂上添加以下内容: 您可能还希望访问器版本保持对称:

  • 本文向大家介绍XenServer6.0中虚拟机设置自动启动的方法,包括了XenServer6.0中虚拟机设置自动启动的方法的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知在XenServer的较早前版本(6.0以前)中,启动XenServer时,可以选择自动启动在其中安装的虚拟机。这个功能在XenServer 6.0中被Citrix取消了,原因是会干扰到XenServer的HA(高可用性)