Date: Tue, 15 Jan 2002 17:35:38 +0900
From: "Tadashi Nakamura" <who@example.com>
----- Original Message -----
From: "Akira Horikawa" <who@example.ne.jp>
To: <who@example.ne.jp>
Sent: Tuesday, January 15, 2002 4:08 PM
Subject: [ml-msde-beg:00012] RE: Primary Key の Numbering
> 堀川です、こんにちは
質問の体をなしていない投稿に、応じていただいて恐縮です。
> -----Original Message-----
> From: Tadashi Nakamura [mailto:who@example.com]
> Sent: Monday, January 14, 2002 11:58 PM
> To: ML MSDE beg
> Subject: [ml-msde-beg:00010] Primary Key の Numbering
>
>
> 一般的には、IDENTITY列(AutoNumber)の欠番に相当する番号を
> 自分で追加することはできませんが、
この欠番を MSDE が、割り当ててきます。従って、select 文で
リストを表示させると、Identity 列が、昇順にならずに、
大小の変化をしています。具体的に、記述します。
(1) delete from table1
で、table1 の全てのレコードを削除します。
(2) insert 文で、いくつかのレコードを挿入します。
このとき、Identity 列は、1からではなく、280といった自然数から
始まり、以降は連番が打たれているのが確認できます。
(3) 今、挿入したレコードの一部を delete 文によって削除します。
はじめの279個と、新たに数個の欠番が生じます。
(4) 次に insert 文によってレコードを挿入すると
(3) で確認した欠番のいくつかが Identity 列として
割り当てられています。
(5) 結果的には、Identity 列は、昇順の自然数が Numbering されて
いるわけではない、という状態になっています。
以上のような MSDE の動作ですが、これで大丈夫なのでしょうか。
実は、私の書いた Script のうち、レコードの訂正の部分が
妙に複雑な処理になってしまい、一見、正しく動作しているように見え
るのですが、ほんとはもっと安全な処理をするのではないかと
気になるのです。
もちろん、主キーの Field を明示的に Numbering しようと
しているのではありません。ただ、Connection を同時に
3つ Open している(こういう言い方でいいのでしょうか)
処理がもしかして禁じ手かもしれない、、、
--
Tadashi Nakamura
who@example.com
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|