我们都知道很多的数据库软件都为表提供了自动编号的功能,这对于进行有些表的功能是十分有用 的,可以减少很多不必要工作,由于SQL server是我最近才使用的所以,在这个过程中遇到了一些问题,但是经过查找资料和摸索总算是解决了,所以现在将自己的心得写下,希望当你遇到同样问题时,可以快速的解决.
在SQL server中要实现自动可以有两种方式:
1.通过"企业管理器",以窗口形式创建,打开如图所示的窗口,这里我们以在test数据库中创建test表的id为自动编号字段为例:
首先:通过"数据库"的弹出菜单"新建数据库" 新建一个数据库test;
然后:选择建好的test数据库,在窗口中选择"表",单击右键,在弹出的菜单选择"新建表",则会进入表设计器进行表的设计.下图是设置的效果.在设计完成后,单击关闭按钮进行保存,并将其命名为"test"
2.通过"查询分析器"以SQL方式创建,打开查询分析器,在查询窗口中输入SQL语句
create database test --创建test数据库
create table test (id int IDENTITY(1,1) not null,test text) --其中的IDENTITY(自动编号的初始舒值,自动编号的增量)即设置自动编号.
3 注意:
(1)一个表只能有一列定义为自动编号属性,
(2)在SQL server中能够进行自动编号的几种数据类型为: decimal、int、numeric、smallint、bigint 或 tinyint。
(3)在创建了自动编号的表中用sql语句插入数据时,其insert中不要包括自动编号的列即如果要在上述test表中插入一行数据,其insert语句就应为:insert into test (test) values ('this is a test table') 或 insert into test values('this is a test table'),而不能使用insert into test (id,test) values ('','this is a test table') 或者 insert into test values ('','this is a test table').否则就会出现"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'test' 中的标识列插入显式值。"的错误提示.如果你一定要在自动编号列中插入特定的行如要执行insert into test values (1,'this is not a test table') ,可以通过首先运行 set IDENTITY_insert test(即表名) on语句来实现.