久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL SERVER中怎么實現自增列

164次閱讀
沒有評論

共計 2707 個字符,預計需要花費 7 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關 SQL SERVER 中怎么實現自增列,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

declare @Table_name varchar(60)

set @Table_name =

if Exists(Select top 1 1 from sysobjects Where objectproperty(id, TableHasIdentity) = 1 and upper(name) = upper(@Table_name) ) select 1else select 0

— or

if Exists(Select top 1 1 from sysobjects so Where so.xtype = U and upper(so.name) = upper(@Table_name) and Exists(Select Top 1 1 from syscolumns sc Where sc.id = so.id and columnproperty(sc.id, sc.name, IsIdentity) = 1 ) ) select 1else select 0

判斷 Table 是否存在自增列 (Identity column), 并查出自增列相關數據:

declare @Table_name varchar(60)set @Table_name =

declare @Table_name varchar(60)set @Table_name = zy_cost_list Select so.name Table_name, – 表名字 sc.name Iden_Column_name, – 自增字段名字 ident_current(so.name) curr_value, – 自增字段當前值 ident_incr(so.name) incr_value, – 自增字段增長值 ident_seed(so.name) seed_value – 自增字段種子值 from sysobjects so Inner Join syscolumns sc on so.id = sc.id and columnproperty(sc.id, sc.name, IsIdentity) = 1Where upper(so.name) = upper(@Table_name)

資料引用:

DBCC CHECKIDENT

檢查指定表的當前標識值,如有必要,還對標識值進行更正。

語法

DBCC CHECKIDENT(table_name [ , { NORESEED| { RESEED [ , new_reseed_value] } } ] )

參數

table_name

是要對其當前標識值進行檢查的表名。表名必須符合標識符規則。有關更多信息,請參見使用標識符。指定的表必須包含標識列。

NORESEED

指定不應更正當前標識值。

RESEED

指定應該更正當前標識值。

new_reseed_value

是在標識列中重新賦值時要使用的值。

注釋

如有必要,DBCC CHECKIDENT 會更正列的當前標識值。然而,如果標識列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 語句中)創建的,則不更正當前標識值。

如果標識列上有主鍵或唯一鍵約束,無效標識信息可能會導致錯誤信息 2627。

對當前標識值所做的具體更正取決于參數規范。

DBCC CHECKIDENT (table_name , NORESEED) 不重置當前標識值。DBCC CHECKIDENT 返回一個報表,它指明當前標識值和應有的標識值。DBCC CHECKIDENT (table_name) 或 DBCC CHECKIDENT (table_name , RESEED) 如果表的當前標識值小于列中存儲的最大標識值,則使用標識列中的最大值對其進行重置。DBCC CHECKIDENT (table_name , RESEED, new_reseed_value) 當前值設置為 new_reseed_value。如果自創建表后沒有將行插入該表,則在執行 DBCC CHECKIDENT 后插入的第一行將使用 new_reseed_value 作為標識。否則,下一個插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小于標識列中的最大值,以后引用該表時將產生 2627 號錯誤信息。

當前標識值可以大于表中的最大值。在此情況下,DBCC CHECKIDENT 并不自動重置當前標識值。若要在當前標識值大于列中的最大值時對當前標識值進行重置,請使用兩種方法中的任意一種:

執行 DBCC CHECKIDENT (

table_name

, NORESEED) 以確定列中的當前最大值,然后使用 DBCC CHECKIDENT (

table_name

, RESEED,

new_reseed_value

) 語句將該值指定為

new_reseed_value

。將

new_reseed_value

置為很小值來執行 DBCC CHECKIDENT (

table_name

, RESEED,

new_reseed_value

),然后運行 DBCC CHECKIDENT (

table_name

, RESEED)。

結果集

不管是否指定任何選項(針對于包含標識列的表;下例使用 pubs 數據庫的 jobs 表),DBCC CHECKIDENT 返回以下結果集(值可能會有變化):

Checking identity information: current identity value  14 , current column value  14 .DBCC execution completed. If DBCC printed error messages, contact your system administrator.

權限

DBCC CHECKIDENT 權限默認授予表所有者、sysadmin 固定服務器角色和 db_owner 固定數據庫角色的成員且不可轉讓。

示例 A. 如有必要,重置當前標識值

下例在必要的情況下重置 jobs 表的當前標識值。

USE pubsGODBCC CHECKIDENT (jobs)GO

B. 報告當前標識值

下例報告 jobs 表中的當前標識值;如果該標識值不正確,并不對其進行更正。

USE pubsGODBCC CHECKIDENT (jobs, NORESEED)GO

C. 強制當前標識值為 30

下例強制 jobs 表中的當前標識值為 30。

USE pubsGODBCC CHECKIDENT (jobs, RESEED, 30)GO

上述就是丸趣 TV 小編為大家分享的 SQL SERVER 中怎么實現自增列了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計2707字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安泽县| 海城市| 老河口市| 长汀县| 岚皋县| 石台县| 宣武区| 山东省| 衡阳县| 延安市| 江北区| 始兴县| 河池市| 永定县| 柞水县| 桂阳县| 新绛县| 延津县| 黎城县| 南溪县| 松江区| 靖西县| 新绛县| 锡林浩特市| 唐海县| 额济纳旗| 曲水县| 东乡| 河间市| 富阳市| 谷城县| 文登市| 津市市| 青神县| 稻城县| 治县。| 云阳县| 柘城县| 和静县| 大英县| 内丘县|