• 締切済み

postgresのシーケンスについて

postgresのSEQUENCEを使って伝票番号を採番しています。 しかし、このシーケンスは時々、勝手にとび番となってしまい困っています。 もちろんCACHEは1としています。 プログラムが悪いのかデータベースの設定に誤りがあるのか不明な 状況です。何か調査の方法があれば教えて下さい。

  • haru3
  • お礼率100% (2/2)

みんなの回答

  • yamasa
  • ベストアンサー率37% (3/8)
回答No.2

SEQUENCEは一意性を保証するものであり、連番を保証する ものではありません。 連番にする必要があるのであれば、SEQUENCEは使用できません。

haru3
質問者

お礼

早々のご回答誠にありがとうございます。 知識不足のまま、 SEQUENCEを使用していました。 早く、連番用処理の作成に取り組みます。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

トランザクションを使用可能なデータベースサーバは 通常この現象が発生します。 したがって連番つけたければ自力で行う必要があります。

haru3
質問者

お礼

早々のご回答誠にありがとうございます。 ということは、Postgresに限らず、連番というのは、 自力で行わないといけないのですね。

関連するQ&A

  • 伝票番号の自動採番について

    伝票番号の採番で、西暦+5桁という仕様です。 これを、年が変わってから入力する際に 新しい年(度)+00001 としたいのですが、どのようにプログラムを組んだらいいのか分かりません。 ちなみに今までのプログラムでは Format関数や、DMax関数を使って自動採番していました。 Access2000での開発です。 どうぞよろしくお願いします。

  • 選択クエリの結果を反映させる

    Access2013です。 伝票番号を自動採番したいのですが、下記の条件からできないでしょうか? Data部とアプリ部でデータベースを分割しています。 Data部データベース:受注テーブル(伝票番号、明細番号・・・) アプリ部データベース:受注_tmpテーブル(構造はData部データベースの受注テーブルと同じ) アプリ部データベースに受注テーブルをリンクしています。 受注テーブルの伝票番号の最大値にプラス1した結果を受注_tmpの伝票番号にセットして 追加クエリでリンク元の受注テーブルを更新したいです。 受注テーブルをクエリ処理した結果(最大伝票番号+1)を受注_tmpにセットして更新し ようとしたりしてますが、エラーでできません。 回答に不足している項目があるかもしれませんが、よろしくお願いします。

  • ヤマト運輸 調査中

    明日ヤマト運輸で届くはずの物があります。 今日、伝票番号で追跡してみたら調査中 ただいま不明な点があり担当店にて調査を行っております。 と出ました。 そして、ヤマトに電話で問合せてみました。 しかし、いつもの配送センターにはちゃんとあるそうです。 なぜ調査中と出たのでしょうか?そしてこの場合きちんと明日届くでしょうか?

  • データベースの設計方法について

     全くの初心者で、いろいろな書籍を参考に販売・在庫管理データベースをつくりたいと勉強しています。  環境はMicrosoft SQL Server 2008 R2 EE をサーバーにインストールして、別のクライアントパソコンから SQL Server Management Studio でデータを作成しています。  データベースとは閉じた空間で、1つのデータベース内で必要なテーブルを全て用意するものと思っていました(参考にした書籍もそうなっていました)。  しかし、ネットでいろいろ調べるとインスタンス内に複数のデータベースを作成し、それらデータベース内のテーブルは相互接続可能出来るみたいでした。  となると、データベースを設計する際 <販売管理データベース>  ・顧客情報テーブル  ・商品情報テーブル  ・在庫テーブル  ・単価テーブル  ・請求データテーブル  ・伝票テーブル  ・etc.  と1つのデータベースに全てのテーブルを用意する設計では無く <販売管理データベース>  ・伝票テーブル  ・請求データ  ・etc. <顧客情報データベース>  ・顧客情報テーブル  ・単価テーブル  ・etc. <商品情報データベース>  ・商品情報テーブル  ・在庫テーブル  ・etc.  みたいに、機能ごとにデータベースを分けて、インスタンス単位で1機能(もしくは複数機能の実装)の設計でも良いのでしょうか?  プログラム言語の、プロジェクト=インスタンス、クラス=データベースみたいな考え方が出来ればと思っています。  この方法が正しいのか誤りなのか、そもそも理解に誤りがあるのか全く見当が付きません。  一般的にはどのようにするものなのでしょうか?

  • 宅配業者が配達先を間違えた?

     私はネットショッピングである商品を注文して、ショップ側から送り状の伝票番号がメールで送られてきたのでその番号を利用して荷物の配達状況を調べていたところ、私が住んでいる地域を担当する営業所とはまったく違う営業所で止まって配送状況が「調査中」になっています。  詳細を調べると「ただいま不明な点があり担当店にて調査を行っております」と表示されたのですが、これは宅配業者が配達先を間違えたのでしょうか?  商品が止まっている営業所は父の出身地(故郷)を担当するところで、同じ苗字が多く住んでいる地域があります。(苗字は特殊な読み方をせずごく普通のものですが…)

  • G65を使ったプログラムについて

    使用機械 森精機(旧日立精機?) モデル vs60 O4200 G65P4201A100 G65P4201A200 M30 O4201 GOTO#1 N1 加工プログラム N2 加工プログラム M99 上記のようにサブプログラムにN100、N200のように加工プログラムを2つ記入している状態です。 メインプログラムにて、G65A100(A200)と引数指定にてN100とN200を読み出したいのですが、GOTO#1を読み込んだ瞬間に、   不明なシーケンス番号です のようなアラームが出てしまい止まってしまいます。 GOTO#1を IF[#1EQ100]GOTO100 IF[#1EQ200]GOTO200 と変えても指定したシーケンス番号まで飛んでくれません。 他の質問者様の回答に *************************************** サブプログラム O9000 GOTO #1 GOTO9999 N1 動作プログラム1 GOTO9999 N2 動作プログラム2 GOTO9999 N9999 M99 *************************************** このプログラムが記載されていましたので。参考に作ってみたのですが,,, わかる方いらっしゃいましたらお力添え頂ければと思います。 よろしくお願いします。

  • 検索をする際一文字ずつ入れてデータベースを反映したい

    質問タイトルが分かりにくくてすいません。 現在、データベースに登録しているユーザのデータを 引っ張ってくるアプリを作っています。 普通にテキストエリアにユーザー名を入れて 検索ボタンを押して、 検索結果を出すのは可能なのですが、 最近よく見かける「郵便番号入力による住所検索」のように 郵便番号を入力し終わると勝手に結果が表示される見たいな物を 作りたいと思っております。 データベースはMySQLを使っているので きっとAJAX+PHP+MySQLで実現できると思うのですが具体的に どのようにプログラムを書くのか分かる方 ご教授ください。

  • Accessで自動採番の方法がわかりません。

    今月より弊社工場で、私が生産管理システムの構築を担当することになりました。 Accessでの構築です。また、Accessは初心者です。 質問は、受注登録時に受注登録フォーム(F_受注登録)で管理番号を自動採番したいのですが、やり方がわかりません。また、管理番号の自動採番実現のためにテーブルの手直し等ありましたらご教授願います。 管理番号の構成 MSSF-10001-1 MSSF→自社番号です。T_自社にMSSFとMSSTを登録しています。 10001→顧客番号と部署番号を結合しています。上3ケタが顧客番号、下2ケタが部署番号です。また、部署番号は顧客の部署になります。 1→枝番号です。1から順にカウントしていきます。例)MSSF-10001-1、MSSF-10001-2、MSSF-10002-1、MSSF-20001-1、MSST-30001-1 質問部分のフローと現在の進捗状況を記載します。 フロー F_受注登録を開く→受注内容を入力→受注内容登録時、管理番号を自動採番し、登録を完了する 現在作成済のテーブル、フォーム T_顧客、T_自社、T_ 受注一覧、T_部署、F_顧客登録、F_受注登録、F_受注一覧 T_顧客→顧客番号、顧客名 T_自社→自社番号、自社名 T_受注一覧→管理番号、顧客名、部署名、担当者、状態、工番、No、品番(図番)、品名、数量、納期、確定納期、出荷日、送り状番号、加工先、材料、材質、備考 T_部署→部署番号、部署名 F_顧客登録→T_顧客へ登録ができます。 F_受注登録→T_受注一覧へ登録ができます。 F_受注一覧→T_受注一覧の閲覧ができます。 ご不明な点等ありましたら、ご連絡ください。 よろしくお願いします。

  • ACCESS テーブル作成にアドバイスください

    初めてACCESSに取り組んでいる超初心者です。2007使用ですが、勤務先で使えるよう、2003形式で保存するつもりです。 社内での物品請求、払い出しのような業務で使おうと思っているプログラムで、最終目的は、個人別注文(請求?)伝票の印刷と物品数量の集計(フロア毎)です。注文伝票は前回分として印刷し、次回注文時に必要に応じて訂正して利用してもらうことを考えています。 次のような感じの伝票です。 3F   山田太郎     請求種別A 1) 商品A     1個    商品B     2個    商品C     1個         定型文1 2) 商品A     3個    商品D     3個         定型文2 3)・・・ ・1人の注文伝票の中に注文番号が複数(多くて20くらいまで)、注文番号1つにつき商品が複数と定型文が1つ。 ・1枚の伝票の中で、商品、定型文は重複して使用される。 ・注文番号は全体の通し番号でなく、1枚の伝票のなかで必ず1から順につくようにしたい。 ・注文番号のふりなおし(並べ替え)と商品の並び順も変更できるようにしたい。 ・直近の請求内容が分かればよいので履歴はとらず、変更をしていければよい。(あまり難しいことはできないので) 書籍にある注文関係データベースの例を参考にして、社員テーブル、商品テーブル、注文テーブル、注文詳細テーブルを作ってみたのですが、注文関連のテーブルをどのようにすればよいかよく分かりません。現在とりあえず作ってみたのが 注文テーブル:注文書番号(オート)、社員ID、請求種別 注文詳細テーブル:注文詳細番号(オート)、注文書番号、商品ID、数量、定型文ID、注文番号(並べ替え用) です。(注文書番号にリレーションシップ設定) これだと結局同じデータ(定型文など)を何度も入力しないといけない気が・・・ 長文ですみません。アドバイスよろしくおねがいします。

  • LASTVAL()の使い方

    こんにちは。 現在、バッチで伝票を登録するプログラムを組んでいます。 実施したい内容は、伝票番号を採番し、伝票テーブルと伝票明細テーブルにデータを書き込むと言う物です。 具体的には、以下のテーブルです。 1.TRN_DENPYO  DENPYO_NO  DENPYO_HIDUKE 2.TRN_DENPYO_MEISAI  DENPYO_NO  DENPYO_MAISAI_NO  DENPYO_SYOHINCD ※TRN_DENPYOのDENPYO_NOはserialです。 そこで、TRN_DENPYO にレコードを追加した後、自動的にカウントアップされるTRN_DENPYOのDENPYO_NOを取得するために LASTVAL()を使用したいのですが、うまく行きません。 以下、実際に記述しているSQL文です。 $sql = 'INSERT INTO "TRN_DENPYO"("DENPYO_HIDUKE")VALUES(' . $denpyo_hiduke . ')'; $db->query($sql); $sql = 'SELECT LASTVAL()'; $result =& $db->query($sql); while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $denpyo_no = $row['LASTVAL()']; } echo $denpyo_no; この時点で、$denpyo_no の値が表示されると思っているのですが、表示されません。 どなたか教えて頂けませんでしょうか? ちなみに環境は、PostgerSQL8.2 php5を使用しています。