
こんにちは。
postgresでレコード数を意識した操作では、SELECT句のlimitが
思いつくのですが、DBのテーブルに登録できる最大行数を設定し、
最大行数を超えたらINSERTが強制的にできないようにする方法
に悩んでいますので、教えて下さい。
環境はredhat9+apache2+tomcat+Jsp+Java1.4+postgres7.2で開発・
保守をしています。
既にWebで公開されており、既に登録された企業の中から好きな企業
に会員として登録し以降その企業のサービスを受けるシステムです。
営業でのプレゼン兼貸出し用(デモ版)としてノートPCに構築する
ことになりました。
「デモ版」と言うことで、機能制限をかける方法として、
・登録できるレコード数を制限する
と方針になりました。
他に、Javaソースに制限機能を追加、.httpaccsessによる認証を
検討しましたが、これに決まった次第です。
すみませんが、ご教授の程お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
「表の格納行数の上限を、行数で利用者が設定」といった機能は、殆どのRDBMSで持っていません。
要件が不明確なのですが、例えばシーケンスを使うか、自前で通番を付け、check制約で値の上限を設定してしまうといった方法も考えられます。
もし、削除が行われない前提なら、これだけで実装可能になります。
もし削除があるなら、次回格納時は、「欠番になっている最小の通番」を再利用するといった仕組みが必要になります。
以上は、「デモ版」ということなら、適用してもいいように思います。
No.1
- 回答日時:
postgresの仕様では『DBのテーブルに登録できる最大行数を設定』
なんてないんじゃないかな?
考えられる方法としてはInsert前に動くトリガー関数を定義して
その中でselect countしてエラーを返せばいいかなと思うけど。
アプリ側でそのエラー処理する必要があるね・・・。
ご回答ありがとうございます。
>postgresの仕様では『DBのテーブルに登録できる最大行数を設定』なんてないんじゃないかな?
やはりそうなのですか…
書籍やWebで検索しても「最大可能な行数」が殆どで悩んでいました。
>アプリ側でそのエラー処理する必要があるね・・・。
避けることはできませんか…。
検討してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0の除算
-
列が存在しないと言われる
-
DB2 「既存カラムへのnot null...
-
constraint と index の違い
-
■一番最初に値が入っている(Nul...
-
COPY時のtimestamp型について
-
powergres(postgres)にalter文...
-
DBから日付順に指定件数の削除...
-
alter tableすると、処理が止ま...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
INSERT INTO ステートメントに...
-
異なるサーバのDBデータ同士を...
-
FROM の中で CASE を使えるでし...
-
ORACLEでLONG項目からCHAR項目...
-
Oracle 2つのDate型の値の差を...
-
ACCESSのクエリで集計で、先頭...
-
Accessクエリーで両方のテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
列が存在しないと言われる
-
INSERTできるレコード数を制限...
-
PostgreSQLで表結合+DELETEしたい
-
長いSQL文を実行するには?
-
DBから日付順に指定件数の削除...
-
動的に生成したカラムを使ったF...
-
0の除算
-
■一番最初に値が入っている(Nul...
-
COPY時のtimestamp型について
-
alter tableすると、処理が止ま...
-
SQLで特定データがNULLなら別デ...
-
constraint と index の違い
-
SQLite:項目が存在しない場合の...
-
Oracleの制約構文に関して
-
INSERTできない
-
powergres(postgres)にalter文...
-
DB2でUNIQUE制約を削除したい
-
SQLiteに関数追加
-
DB2 「既存カラムへのnot null...
-
複数キーワードでのあいまい検索
おすすめ情報