`
touchinsert
  • 浏览: 1290495 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL2005中设置自动编号字段

 
阅读更多

如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。

具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号)。在包含标识列的表中插入值时,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

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

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

当您在网格单元格外单击或使用 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)
-------------------------------------------

如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。

具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号)。在包含标识列的表中插入值时,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

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

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

当您在网格单元格外单击或使用 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 2005中设置自动编号字段的方法

    主要介绍了SQL server 2005中设置自动编号字段的方法 ,需要的朋友可以参考下

    C#在 ACCESS 表中自动编号复位及获取当前最大值SQL命令

    C#在 ACCESS 表中自动编号复位及获取当前最大值SQL命令,适于C#. 文本源码,其中执行命令的函数用伪语言表示

    可以方便设置sql自动编号

    可以利用sql自带的查看分析器对数据表中的字段设置成自动编号

    常用的sql语句。新建表、删除表、插入数据、删除数据、更新数据、新增字段、删除字段、修改字段、新建约束、删除约束,等等常用语句

    常用的sql语句。新建表、删除表、插入数据、删除数据、更新数据、新增字段、删除字段、修改字段、新建约束、删除约束,等等常用语句

    sql获得自动增加字段的下一个编号,不是max(id)+1

    获得自动增加字段的下一个编号,不是max(id)+1

    经典SQL脚本大全

    │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例...

    Sqlserver2000经典脚本

    │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和...

    八步解决ACCESS自动编号问题(将SQL SERVER 2000数据库,转换为ACCESS数据库)

    主要介绍了将SQL SERVER 2000数据库转换为ACCESS数据库时的ACCESS自动编号问题,需要的朋友可以参考下

    sqlsever实现更改字段名

    新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default ‘默认值’ null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,...

    asp下如何在Access数据库中立即得到所插入记录的自动编号?

    首先,我们要保证获得记录集的方式支持bookmark属性,如在1、3插入一条有自动编号字段的记录后,获取该记录的bookmark属性值: temp = rs.bookmark 然后再: rs.bookmark = temp Response.write rs.Fields(“ID...

    SQLite中重置自动编号列的方法

    name字段记录了自动编号字段所在的表,seq字段记录了当前用到的序号(下一条记录的编号就是当前序号加1)。 在开发过程中,我们经常要把表重置。也就是说把表中的记录全部清空,并把自动编号归0。在SQLite中,只需要...

    SQL2005入门到精通(4)

    50 4.4.2 创建惟一索引 51 4.4.3 查看表的索引 52 4.4.4 删除索引 53 4.5 维护数据表 53 4.5.1 在表中插入新列 53 4.5.2 改变表中列的排列顺序 54 4.5.3 自动编号列和标识符列 54 4.5.4 可...

    AC转SQL注意事项

    在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号 所有的默认值都丢失了...

    程序员的SQL金典.rar

     10.4.2 MS SQL Server中的自动增长字段  10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  ...

    程序员的SQL金典4-8

     10.4.2 MS SQL Server中的自动增长字段  10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  ...

    RSS新闻管理系统源码(asp+ sql server 2005 ),

    使用新闻发布及管理系统可以使...本系统采用目前比较流行的ADO数据访问技术,并将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。这也是本系统的特色和优势。

    SQL2005入门到精通(6)

    第6章 数据表 81 6.1 用CREATE TABLE语句创建表 81 6.1.1 一个创建表的小实例 81 6.1.2 基本语法 83 6.1.3 创建自动编号列 84 6.1.4 创建非空列 87 6.1.5 字段的默认值 88 6.1.6 选择表存放...

    SQL SERVER 2000开发与管理应用实例

    5.1 自动编号 123 5.1.1 IDENTITY 123 5.1.2 ROWGUIDCOL 129 5.2 手工编号 131 5.2.1 查表法 131 5.2.2 独立编号表法 135 5.2.3 随机编号 139 5.3 缺号与补号 143 5.3.1 检查缺号 143 ...

    MYSQL常用命令大全

    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5. mysql> insert into MyClass values(1,'Tom',96.45),(2,...

Global site tag (gtag.js) - Google Analytics