プロが教えるわが家の防犯対策術!

こんにちは。

postgresでレコード数を意識した操作では、SELECT句のlimitが
思いつくのですが、DBのテーブルに登録できる最大行数を設定し、
最大行数を超えたらINSERTが強制的にできないようにする方法
に悩んでいますので、教えて下さい。

環境はredhat9+apache2+tomcat+Jsp+Java1.4+postgres7.2で開発・
保守をしています。

既にWebで公開されており、既に登録された企業の中から好きな企業
に会員として登録し以降その企業のサービスを受けるシステムです。

営業でのプレゼン兼貸出し用(デモ版)としてノートPCに構築する
ことになりました。
「デモ版」と言うことで、機能制限をかける方法として、
・登録できるレコード数を制限する
と方針になりました。
他に、Javaソースに制限機能を追加、.httpaccsessによる認証を
検討しましたが、これに決まった次第です。

すみませんが、ご教授の程お願いします。

A 回答 (2件)

postgresの仕様では『DBのテーブルに登録できる最大行数を設定』


なんてないんじゃないかな?
考えられる方法としてはInsert前に動くトリガー関数を定義して
その中でselect countしてエラーを返せばいいかなと思うけど。
アプリ側でそのエラー処理する必要があるね・・・。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

>postgresの仕様では『DBのテーブルに登録できる最大行数を設定』なんてないんじゃないかな?
やはりそうなのですか…
書籍やWebで検索しても「最大可能な行数」が殆どで悩んでいました。

>アプリ側でそのエラー処理する必要があるね・・・。
避けることはできませんか…。

検討してみます。
ありがとうございました。

お礼日時:2009/02/20 16:17

「表の格納行数の上限を、行数で利用者が設定」といった機能は、殆どのRDBMSで持っていません。



要件が不明確なのですが、例えばシーケンスを使うか、自前で通番を付け、check制約で値の上限を設定してしまうといった方法も考えられます。
もし、削除が行われない前提なら、これだけで実装可能になります。

もし削除があるなら、次回格納時は、「欠番になっている最小の通番」を再利用するといった仕組みが必要になります。

以上は、「デモ版」ということなら、適用してもいいように思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す