mysql:9277
From: Kenji Irie <Kenji Irie <kenji@xxxxxxxxxx>>
Date: Fri, 23 Apr 2004 00:29:56 +0900
Subject: [mysql 09277] Re: auto_incrementで次番号を確認したい。
はじめまして入江といいます。
もうスレッドが収束しそうなところへしゃしゃり出て申し訳ありません。
>auto_increment型について質問がありまして投稿しました。高橋と申します。
auto_increment型ですがこのように考えたらいかがでしょう。
※※主キーをコンピュータに任せるシステム※※
主キーの役割はご存知ですよね。
※行を特定するための列である。
※他の行と同じものがあってはならない。
※一度設定したら基本的には変更しない。
この特徴があるから他の表との関係を正常化することが出来ます。
当然その為には人が入力する値であれば同一のものが出てこないようにチェックをし
なければならない。
プログラムから生成する場合にも、過去に生成された値と重複しないように管理が必
要になります。
つまりこれを考えるだけで結構な工数が必要になりますよね。
「松枝」さんの言われているようにマルチタスクマルチユーザ環境であればさらにこ
れに衝突しないように同期を取っていかなければなりません。
(シングルとマルチではプログラムの仕方はまるっきり変わってきます。このあたり
は肌で感じるように経験を積んで下さい。)
ちょっと話がそれてしまいましたが、auto_increment型があればそれらを一切考えな
くても重複しない「主キー」値を生成してくれます。
先ほども言いましたが主キーには「データベースアプリケーションが行を特定する」
という意味を与えておけばいい事になります。
僕がシステムを設計する場合には主キーはこの意味以外を与えません。
年度が必要であれば年度列を設けます。連番が必要であれば連番列を設けます。
それが主キーでなければ後での調整もし易いはずです。
そして主キー列は表面には出しません。
(プログラム内、SQL内では使いますが人間の読む場所には出さないって事です)
Accessのオートナンバー型もMySQLのauto_increment型もかなりの人々が連番を付け
る為に利用されてしまいがちですが、数が自動的に増えていくのはあくまでも過去の
値と衝突しない一番簡単な方法をとっているに過ぎません。
(後は挿入順になってくれるってメリットもあるかもしれませんね)
当然auto_increment型は挿入しないとどんな値になるか分からないですよね。
他の表との関係をとっているときには致命傷になります。
ですからLAST_INSERT_ID()でMySQLにどんな値を入れたのか教えてもらう事になりま
す。
もう一度主キーの目的を考えてみて下さい。
それで失礼いたします。
--
Kenji Irie mailto:kenji@xxxxxxxxxx
9239 2004-04-20 18:45 [高橋政利 <takahashi@] auto_incrementで次番号を確認したい。 9240 2004-04-20 23:29 ┣[Shinya Kawaji <kawaj] 9245 2004-04-21 09:00 ┃┗[高橋政利 <takahashi@] 9248 2004-04-21 10:12 ┃ ┗[Shinya Kawaji <kawaj] 9250 2004-04-21 11:20 ┃ ┗[ML account <ml@xxxxx] 9246 2004-04-21 09:15 ┣["片寄白王" <katayose] 9251 2004-04-21 17:39 ┃┗[川合孝典 <gcd00051@x] 9252 2004-04-21 18:02 ┃ ┣["山本 瑞己" <mizuki] 9253 2004-04-21 18:53 ┃ ┗[ML account <ml@xxxxx] 9254 2004-04-22 00:19 ┃ ┗["KATAYOSE hakuo" <ka] 9255 2004-04-22 01:42 ┃ ┗[ML account <ml@xxxxx] 9256 2004-04-22 09:02 ┃ ┗["片寄白王" <katayose] 9258 2004-04-22 09:36 ┃ ┗[高橋政利 <takahashi@] 9265 2004-04-22 11:44 ┃ ┗[ML account <ml@xxxxx] 9249 2004-04-21 10:56 ┣[Seiji Tateyama <tate] 9257 2004-04-22 09:07 ┣[高橋政利 <takahashi@] 9264 2004-04-22 11:44 ┃┗[ML account <ml@xxxxx] -> 9277 2004-04-23 00:29 ┗[Kenji Irie <kenji@xx] 9279 2004-04-23 08:01 ┗[高橋政利 <takahashi@]