程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SQL Server中自動獲取編號字段

SQL Server中自動獲取編號字段

編輯:關於MYSQL數據庫

       ①像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開始計。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved