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

SQL Server 2000中設計表時如何得到自動編號字段

編輯:關於SqlServer

    具體步驟如下:
    ①像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