ホームページ >コンピューターのチュートリアル >コンピュータ知識 >SQL Server 2008 で自動番号付けを実装するにはどうすればよいですか?
注: ID 属性は、NULL を許可せず、データ型が 10 進数、整数、数値、小さい整数、大きい整数、または小さな整数の列にのみ設定できます。さらに、ID プロパティを主キー列に設定することはできません。
###1つ。 SQL 管理ツールを使用して列の ID 属性を変更する1. オブジェクト エクスプローラーで、データ型を変更する列を含むテーブルを右クリックし、[変更] をクリックします。テーブルはテーブル デザイナーで開きます。
2. 変更する列の「NULL を許可する」チェックボックスをオフにします。
3. [列のプロパティ] タブで、[識別仕様] プロパティを展開します。
4.「はい ID」サブプロパティのグリッド セルをクリックし、ドロップダウン リストから「はい」を選択します。
5.「識別シード」セルに値を入力します。この値はテーブルの最初の行に割り当てられます。デフォルトでは、この値は 1 になります。
6.「識別増分」セルに値を入力します。この値は、「識別シード」に基づいた行ごとの増分です。デフォルトでは、増分は 1 に設定されています。
###二。作成するSQL文
テーブル作成時に自動番号付けフィールドを指定する
CREATE TABLE [dbo].[UserInfor](
[UserID] [int] IDENTITY(100,2) NOT NULL, --初期値と増分ステップはここで指定できます
[ユーザー名] [nchar](10) NOT NULL、)
SQL サーバーの自動番号付けの問題について
レコード数がそれほど多くない (1,000 万件以上) 場合、この値は一意です。つまり、2 つは同じではありません。
しかし、問題が発生します。たとえば、10 個のレコードを順番に生成するとします。
1、2、3、4、5、6、7、8、9、10次に、レコード No. 3 を削除すると、残りのレコードは次のようになります:
1、2、4、5、6、7、8、9、10
数値を途中で中断することなく 1 から徐々に増加させたい場合は、「数値」などの別の非識別列を設定できます。新しいレコードを追加するときは、次のメソッドを使用できます:
クエリ ステートメントでは、次のステートメントを使用して、テーブル内の数値列の最大値を選択できます。 SELECT @number = MAX(number) FROM テーブル名
テーブル名(数値)の値(@数値1)に挿入
---------------------
上記は SQL ステートメントを使用したデモですが、データベースの操作にはストアド プロシージャを使用することを前提としています。 ASP言語を使用する場合は、次のように実行できます:
psql = "SELECT MAX(数値) AS maxnumber FROM テーブル名"
rs.open psql,conn,3,3
maxnumber=rs("最大番号")
最大数値を読み取り、1 を加算して、それをデータ追加ステートメントで使用します。
---------------------
このようにして、手動で番号を生成し、レコードを削除するときに次のようなプログラムを作成できます。
' 削除するレコード番号を@n
とする番号=@n
のテーブル名を削除しますtablename という名前のレコードを更新し、number フィールドの値を 1 ずつ減らしますが、number がパラメータ @n の値より大きい場合にのみ更新します。
これを行った後、番号の順序を並べ替え、レコードを削除して番号を付け直します。同様にSQL文のデモもお見せできますが、今回はASP SQLを使用したコードは提供されておりませんので、ご自身で参照して理解してください。
以上がSQL Server 2008 で自動番号付けを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。