`

Sql2000中对标识列的操作方法

阅读更多

  Sql2000中对标识列的操作方法

---Server修改标识列方法
----允许对系统表进行更新
exec sp_configure 'allow updates',1
reconfigure with override
GO

----取消标识列标记
update syscolumns set colstat = 0 where id = object_id('tablename') and colstat = 1
GO

----恢复标识列标记
update syscolumns set colstat = 1 where id = object_id('tablename') and name = '标识列名称'


----重新设置标识的起始值
DBCC CHECKIDENT (表名称, RESEED, 10003)

----禁止对系统表进行更新
exec sp_configure 'allow updates',0
reconfigure with override

一、标识列的定义以及特点

SQL Server中的标识列又称标识符列,习惯上又叫自增列。
该种列具有以下三种特点:

1、列的数据类型为不带小数的数值类型
2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。

由于以上特点,使得标识列在数据库的设计中得到广泛的使用。

二、标识列的组成
创建一个标识列,通常要指定三个内容:
1、类型(type)
在SQL Server 2000中,标识列类型必须是数值类型,如下:
decimal、int、numeric、smallint、bigint 、tinyint
其中要注意的是,当选择decimal和numeric时,小数位数必须为零
另外还要注意每种数据类型所有表示的数值范围

2、种子(seed)
是指派给表中第一行的值,默认为1

3、递增量(increment)
相邻两个标识值之间的增量,默认为1。

三、标识列的创建与修改
标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这

里只讨论使用Transact-SQL的方法

1、创建表时指定标识列
标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
CREATE TABLE T_test
(ID int IDENTITY(1,1),
Name varchar(50)
)

2、在现有表中添加标识列
下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列
--创建表
CREATE TABLE T_test
(Name varchar(50)
)

--插入数据
INSERT T_test(Name) VALUES('张三')

--增加标识列
ALTER TABLE T_test
ADD ID int IDENTITY(1,1)

3、判段一个表是否具有标识列

可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')
如果有,则返回1,否则返回0

4、判断某列是否是标识列

可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
如果该列为标识列,则返回1,否则返回0

4、查询某表标识列的列名
SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
   WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(     
      OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

5、标识列的引用

如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
例如,若要查询上例中ID等于1的行,
以下两条查询语句是等价的
SELECT * FROM T_test WHERE IDENTITYCOL=1
SELECT * FROM T_test WHERE ID=1

6、获取标识列的种子值

可使用函数IDENT_SEED,用法:
SELECT IDENT_SEED ('表名')

7、获取标识列的递增量

可使用函数IDENT_INCR ,用法:
SELECT IDENT_INCR('表名')

8、获取指定表中最后生成的标识值

可使用函数IDENT_CURRENT,用法:
SELECT IDENT_CURRENT('表名')
注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。

 

分享到:
评论

相关推荐

    Sql修改标示列的方法

    以上就是关于如何在SQL Server中修改标识列的一些基本方法和步骤。需要注意的是,在执行这些操作时要格外小心,以免造成数据丢失或其他意外情况。同时,建议在执行任何修改之前,先备份相关的数据表,以防止不可预料...

    SQL Server修改标识列方法 如自增列的批量化修改

    代码如下: –允许对系统表进行更新 exec sp_configure ‘allow updates’,1 reconfigure with override GO –取消标识列标记 update syscolumns set colstat = 0 where id = object_id(‘tablename’) and colstat ...

    SQL Server手工插入标识列的方法

    总之,`SET IDENTITY_INSERT`是SQL Server中一个有用的工具,允许在特定情况下对标识列进行手动操作。但应谨慎使用,确保遵循最佳实践,避免引发潜在的数据冲突或一致性问题。在大多数情况下,让SQL Server自动管理...

    sqlsever为标识列指定显式值

    在SQL Server中,标识列是一种特殊的自动递增列,通常用于主键,它会在每次插入新行时自动为该列生成唯一的数值。然而,有些情况下,我们可能需要为标识列指定一个具体的显式值,例如在数据迁移或者复制数据到具有...

    SQL server列自动增加方法

    这个特性在SQL Server中被称为“标识列”(Identity Column)。下面我们将详细讲解如何设置和使用SQL Server列的自动增加功能。 1. **标识列的定义**: 标识列是一种特殊类型的整数列,其值由SQL Server自动递增。...

    Insert语句向标识列中插入数据.pdf

    在SQL语言中,标识列(Identity Column)是...在SQL Server中,可以通过`SET IDENTITY_INSERT`来开启或关闭对标识列的直接插入,从而满足特定的业务需求。在进行此类操作时,应谨慎处理,以确保数据的一致性和完整性。

    SQL 2005 列转行的方法

    在SQL Server 2005中,我们经常需要将数据从列的形式转换为行的形式,这一操作在数据库处理中被称为“行列转换”。这种转换对于数据分析、报表制作或数据展示非常有用。本文将详细介绍两种实现SQL Server 2005中列...

    入门sql2000看图教程

    本文档通过具体的示例和步骤介绍了如何在SQL Server 2000中进行数据库的创建、维护以及其他相关操作。通过学习这些基础操作,初学者可以快速掌握SQL Server的基本使用方法,为后续更深入的学习打下坚实的基础。

    sqlserver使用UNPIVOT函数列转行

    通过对 SQL Server 中 `UNPIVOT` 函数的学习,我们不仅了解了其基本语法和用途,还通过具体示例掌握了其实现方法。此外,还讨论了该函数的实际应用场景,这对于提升数据处理能力具有重要意义。在未来的工作中,灵活...

    sql2000 Log Explorer4.2(含注册码)+汉化

    他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...

    SQLServer2000基础教程

    本教程覆盖了SQL Server 2000的基础知识点,从数据库的创建到维护管理,再到特定工具的使用方法,旨在帮助初学者全面掌握SQL Server 2000的操作技巧。通过实践案例的解析,加深对SQL Server 2000应用场景的理解。...

    SQLServer2000基础教程.doc

    在SQL Server 2000中,表是数据库的核心组成部分,用于存储具体的数据。表设计包括定义表的结构(字段、数据类型等)、添加各种约束以确保数据的完整性以及为表创建索引以提高查询性能。 - **主键约束**:每个表...

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

    14.3.3 标识列与普通列的相互转换 447 14.3.4 把列添加指定位置 450 14.3.5 在两个SQL Server数据库之间复制对象 451 第 15 章 SQL Server应用疑难解答 455 15.1 访问SQL Server实例的常见问题 455 ...

    SQL Server 之 SET IDENTITY_INSERT

    在SQL Server中,`SET IDENTITY_INSERT`是一个重要的命令,它主要用于处理标识列(即自动编号列,通常由`IDENTITY`关键字定义)的显式赋值问题。默认情况下,当向一个包含`IDENTITY`属性的表中插入数据时,标识列的...

    sql2000数据拆分

    根据提供的信息,我们可以详细探讨如何在SQL Server 2000环境中实现数据拆分功能。具体来说,就是如何将一个包含逗号分隔值的字段拆分成多行记录。 ### SQL Server 2000 数据拆分技术 #### 1. **背景与目标** - *...

    sql server获得新记录标识列值的二种方法

    总的来说,这两种方法都可以帮助你在SQL Server中获取新插入记录的标识列值,但`OUTPUT`关键字通常被认为是更安全和灵活的选择,因为它能精确地反映出插入操作的影响。而`@@IDENTITY`则更简洁,但在某些情况下可能...

    Access转成SQL数据库的方法

    1. 自动编号字段:Access中的自动编号字段在SQL Server中不会自动设置为标识列,需要手动修改,并设置标识种子和标识增量。 2. 是/否字段:Access中的Yes/No字段在SQL Server中会转换为bit类型,可能需要调整为适合...

Global site tag (gtag.js) - Google Analytics