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)
上述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开始计。

时间: 2024-10-03 08:28:38

SQL Server 2000中设计表时如何得到自动编号字段的相关文章

sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入

FROM http://www.cnblogs.com/geovindu/archive/2009/07/03/1516159.html 1/**//********************************************************** 2测试数据 sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入 3---涂聚文 缔友计算机信息技术有限公司 软件工程师 geovindu@163.com www.dupcit.com 4---捷为工作室

如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本

server 翁 彦 PowerDesigner是Sybase公司著名的产品,我从16-bit的windows开始,就接触并使用这个工具,应该说是有很深的感情.PowerDesigner是DBA和软件架构师设计的利器,随着版本的不断升级,PowerDesigner提供了更多更强大的功能.仅以本篇为开始,向大家介绍一些PowerDesinger中的使用技巧,帮助大家更好地更有效率地使用这个CASE工具. 问题的提出 我曾经在很多网上看到有朋友问起,在PowerDesigner的Physical M

使用SQL Server 获取插入记录后的ID(自动编号)_MsSql

最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 2005中有几种方式可以实现. 要获取此ID,最简单的方法就是在查询之后select @@indentity--SQL语句创建数据库和表 复制代码 代码如下: create database dbdemo go use dbdemo go create table tbldemo (     id int primary key identity(1,1),  

使用SQL Server 获取插入记录后的ID(自动编号)

最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 2005中有几种方式可以实现. 要获取此ID,最简单的方法就是在查询之后select @@indentity --SQL语句创建数据库和表 复制代码 代码如下: create database dbdemo go use dbdemo go create table tbldemo (     id int primary key identity(1,1),

sql server 2008 建表时不能输入空值

问题描述 在sqlserver2008建表时,有语文列,数据类型为float,建好后,在录入"语文"成绩时整数.小数都能录入,就是空值不能录入(不是NULL),因为有没有考试的"语文"成绩要空着,空着的自动为0,求解??? 解决方案 解决方案二:设置Defaultvalue成0ALTERTABLE[dbo].[Test]ADDCONSTRAINT[DF_Test_English]DEFAULT((0))FOR[English]GO[dbo].[Test]:表名[DF

将MySQL迁移到Microsoft SQL Server 2000 (一)

mysql|server 将MySQL迁移到Microsoft SQL Server 2000 摘要 本白皮书描述了 Microsoft SQL Server 2000 的迁移能力,并提供了帮助开发人员将 MySQL 数据库迁移到 SQL Server 2000 的特定信息. 引言 本指南解释如何利用几个内置的 SQL Server 工具和实用程序将 MySQL 迁移到 Microsoft? SQL Server? 2000.它还提供了如何修改 MySQL 应用程序,使之与 SQL Server

教你如何提高SQL Server 2000的性能?

以往的服务器,由于内存价格过高,一般配的内存不是很多,超过4G的当然就不多了现在的服务器,配置超过4G就很多,在配作SQL 数据库服务器后,很多的人只选默认的设置,虽然可以正常使用,可是却把大量的内存浪费了(SQL服务使用的内存不会超过1.8G),系统的性能也不能因为的大内存而提升,这是很可惜的. 下面介绍一种方法教你如何提高SQL Server 2000 的性能. 配置的过程如下.(如果服务器的内存少于4G,不用配置) 1.打开系统中的大内存支持(windows) 要启用 Windows 20

asp.net excle表批量导入到sql server 2000的同时实现更新功能

问题描述 asp.net excle表批量导入到sql server 2000的同时实现更新功能 excle批量导入功能已经实现了,用的SqlBulkCopy. 但怎样能实现更新功能呢? 导入的数据表内容很多,都是上万条数据的,所以要保证效率! 有知道的大神,请给我详细代码,谢谢! 解决方案 我用的下面代码实现的,是在网上找的方法,主要思路是,两个表比较,删除相同数据,然后用SqlBulkCopy导入数据. 现在的问题是,如果excle表和sql server表的数据很多,执行起来会很慢,经常超

SQL Server中多表连接时驱动顺序对性能的影响

原文:SQL Server中多表连接时驱动顺序对性能的影响   本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)   最近在SQL Server中多次遇到开发人员提交过来的有性能问题的SQL,其表面的原因是表之间去的驱动顺序造成的性能问题,具体表现在(已排除其他因素影响的情况下),存储过程偶发性的执行时间超出预期,甚至在调