Mysqlに関して質問です。


レコードを追加する際、自動的にユニークな連番数字を特定のカラムに保存したいのですが「auto_increment」の設定以外で可能でしょうか?
「auto_increment」を既に設定しているんですが2個目の設定が出来ないので他に方法はないか模索しています。

回答の条件
  • 1人2回まで
  • 登録:2009/11/05 16:44:06
  • 終了:2009/11/12 16:45:03

回答(2件)

id:HALSPECIAL No.1

HALSPECIAL回答回数407ベストアンサー獲得回数862009/11/05 17:11:05

ポイント35pt

インサート時のトリガーを利用するという方法はいかがでしょう?

spiritlooseのはてなダイアリー

MySQLのトリガでシーケンスでの自動採番を実現する

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/11/05 17:30:54

ポイント35pt

INSERTが発せられた時に動くトリガをセットしておくという手になりますが、

値を保持しておくために別途テーブルが必要になったりだとか、

計算させる手間だとかで、レスポンスが悪くったりしますので、

システム要件として本当に必要なカラムなのかを検討なさる事をお勧めしたいです。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 18 トリガ

MySQL :: MySQL 5.1 リファレンスマニュアル :: 18.1 CREATE TRIGGER 構文

  • id:b-wind
    > 自動的にユニークな連番数字
    auto increment 自体必ずしも連番ではないのだがそこはいいのか?
  • id:horonict
    auto_incrementと同じ連番数字を入れるカラムをもう1つ用意するのだとしたら、無駄ですよね。何か他に要件はありませんか?
  • id:chuken_kenkou
    MySQLのバージョンは、何でしょうか?
    また、連番の列が2種類必要な理由も、併せて教えてください。
  • id:php-beginner
    >b-wind
    必ず連番になると信じてました・・・。
    コメントではなくていいので連番にならない場合があればお教えください。

    >horonict
    同じ数字ではなく別で管理する数字です。

    >chuken_kenkou
    バージョンは4.0か5.0両方で設定できるのが理想です。
    一つの連番ではDB自体のメンテとして使いたくもう一つはシステム画面で会員番号などを表示したく考えています。
    システム側で処理しても良いのですがauto_incrementみたいに投げれば勝手に番号付けてくれるように出来ないかなと思いまして質問しました。
  • id:horonict
    > 同じ数字ではなく別で管理する数字です。

    MySQLだけで管理するのは難しいと思います。
    カウンタ用のテーブルを別に用意してフローコントロール・コンストラクト文を使えば、もしかするとできるかもしれませんが、バージョン5以降でないと適用できません。
    http://dev.mysql.com/doc/refman/5.1/ja/flow-control-constructs.html


    > 連番にならない場合があればお教えください

    deleteとinsertを繰り返すと、必ずしも連番ではなくなります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません