SQL Server重置自標識列 應用

2021-06-22 10:02:01 字數 1729 閱讀 5955

1.重置標識方法:

方法一:

使用truncate

truncate table name可以刪除表內所有值並重置標識值 ,但是表內的資料將丟失。

方法二:

你想要重置標識值(不刪除資料)採用下面方法即可:但是存在問題:

1)dbcc checkident ('表名', reseed,new_value)(重置新的標識值,new_value為新值)

2) 問題:如dbcc checkident ('表名',reseed,1)即可,但如果表內有資料,則重設的值如果小於當前表

的標識最大值,再插入資料時未指定插入的標識值,這樣會導致標識衝突問題,如果你的標識設定成自

增的。此外,你也可以用 dbcc checkident('表名',reseed),即可自動重設值,最後生成值。

2.方法擴充套件介紹

1)dbcccheckident

dbcc checkident ('table_name', reseed, new_value)

如dbcc checkident ("bc_pos",reseed,1)即可。也可以用 dbcccheckident("bc_pos",reseed)即可自動

重設值。

2)判段乙個表是否具有標識列

可以使用 objectproperty 函式確定乙個表是否具有identity(標識)列.

用法:select objectproperty(object_id('表名'),'tablehas

identity')如果有,則返回1,否則返回0

3)判斷某列是否是標識列

可使用 columnproperty 函式確定 某列是否具有identity 屬性.

用法selectcolumnproperty( object_id('表名'),'列名','isidentity') 是則返回1,否則返回0

4)查詢某錶標識列的列名

sql server中沒有現成的函式實現此功能,實現的sql語句如下

語句:select column_name from inform

ation_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  用法:selectident_current('表名')

注意事項:當包含標識列的表剛剛建立,為經過任何插入操作時,使用ident_current函式得到的值為標識

列的種子值,這一點在開發資料庫應用程式

的時候尤其應該注意。

SQL SERVER重置自動編號列 標識列

兩種方法 一種是用truncate truncate table name 可以刪除表內所有值並重置標識值 二是用dbcc checkident dbcc checkident table name reseed,new reseed value 如dbcc checkident bc pos re...

SQL SERVER重置自動編號列 標識列

兩種方法 一種是用truncate truncate table name 可以刪除表內所有值並重置標識值 二是用dbcc checkident dbcc checkident table name reseed,new reseed value 如dbcc checkident bc pos re...

SQL SERVER重置自動編號列 標識列

兩種方法 一種是用truncate truncate table name 可以刪除表內所有值並重置標識值 二是用dbcc checkident dbcc checkident table name reseed,new reseed value 如dbcc checkident bc pos re...