重置sql server标识列

sql server标识列是大家非常熟悉的了,下面为您介绍了sql server标识列重置的一些知识,如果您对sql server标识列方面感兴趣的话,不妨一看。

1、删除表内所有值并重置标识值 TRUNCATE TABLE TableName

2、保持表的内容,并重置自动编号列的SEED

DBCC CHECKIDENT (‘table_name‘, RESEED, new_reseed_value)

如dbcc checkident ("bc_pos",reseed,1)即可,但如果表内有数据,则重设的值如果小于最大值可能会有问题,这时可以用 dbcc checkident("bc_pos",reseed)即可自动重设值。

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

可以使用 objectPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:

Select OBJECTPROPERTY(OBJECT_ID(‘表名‘),‘Table HAS Identity‘)

如果有,则返回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函数得到的值为标识列的种子值,这一点在开发数据库应用的时候尤其应该注意。

时间: 2024-12-16 11:13:42

重置sql server标识列的相关文章

使用sql语句创建修改SQL Server标识列(即自动增长列)

一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值3.列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列.由于以上特点,使得标识列在数据库的设计中得到广泛的使用.二.标识列的组成创建一个标识列,通常要指定三个内容:1.类型(type)在SQL Server 2000中,标识列类型必须是数值类型,如下:decima

sql server 查看列备注、类型、字段大小

select 列名 = a.name ,类型 = c.name ,长度 = columnproperty(a.id,a.name,'precision') ,备注 = g.value from syscolumns a left join sysobjects b on a.id=b.id left join systypes c on a.xusertype = c.xusertype left join sysproperties g on a.id =g.id and a.colid =g

Mysql与sql server的列的合并

Mysql SELECT concat(列1,列2) Nmae from 表名 sql server SELECT 列1+"|"+列2 Nmae from 表名 或者 union all

sql server“键列信息不足或不正确。更新影响到多行”

环境:windows server 2003 sp2,sql server 2000,用于管理固定资产的软件. 故障现象: 要同时增加两台思科交换机的固定资产信息,由于型号什么都一致,只是序列号不一样.于是就想做完一台后,能否直接复制一条单据过来改一下不一致的地方就行了.但是前台无法实现.本着偷懒和学习的态度,杀到后台,直接打开数据库操作. 去了主键限制,用下面语句复制: INSERT INTO da111 SELECT * FROM da111 WHERE (scodel = '03-ne-0

模拟实现SQL Server字段列显示的数据类型

本文目录列表: 1.SQL Server表设计视图中的数据类型列展示效果 2.模拟实现类似的数据类型显示效果 3.测试效果 4.总结语 5.参考清单列表 1.SQL Server表设计视图中的数据类型列展示效果   在SQL Server 2012的表设计视图中可以看到如下图的效果: 如上图所示红色矩形框圈住的数据类型列中展示的效果,特别针对用户定义数据类型也显示了其基本数据类型. 这种针对字段列显示的数据类型效果很直接,很容易看到其数据类类型是什么,甚至看能看到精度或小数位,最重要的是显示了用

sql server 操作列

新增一列 alter table tableName add columnName varchar(30) 修改列类型: alter table tableName alter column columnName varchar(4000) 修改列的名称: EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2) 删除列: alter table tableName drop column

SQL Server 去掉列中的空格

update 表名 set 字段名=Rtrim(Ltrim(字段名)) ltrim rtrim只能去掉左右两边的空格 可以用replace()替换一下,去掉所有的空格 寻找有换行符的: SELECT * FROM [表名] WITH(NOLOCK) where 列名like '%' 去除某列的换行符: update [表名] set  列名=replace 列名,'','')

Sql server 多列去重复值,相同的只显示一条数据

CREATE TABLE #tp( headerNo VARCHAR(10), machineNO VARCHAR(10), descrption nVARCHAR(20), artNo VARCHAR(20), qty INT , repartno varchar(20) , repqty INT) insert INTO #tp SELECT 'HD01','0101520',N'电池出问题','102020',2,'102020',2insert INTO #tp SELECT 'HD01

sql server 多列转多行实现方法

select * from b_workOrder select * from( SELECT work_order_id,work_level, roles,code FROM (SELECT work_order_id,work_level,operator_code,sqc_code,hqc_code FROM b_workOrder where sqc_code <>'') p UNPIVOT (code FOR roles IN (operator_code,sqc_code,hqc