質問: ### Postgresqlの制約で他テーブルの値を参照する事はできないのでしょうか セミナー予約システムで以下テーブルを想定して、申し込みが定員数を超えないようにデータを管理したいと考えております。 seminars: セミナーマスタ entries: 申込者情報を管理 entries_seminars: seminarsとentriesの中間テーブル セミナーの申し込みがあるとentries_seminarsにデータを登録しますが、seminarsに持つ定員数の値以下のレコード数のみ登録できるように、制約を使って定員数の制御をしたいと考えました。 しかし、postgresqlマニュアルの検査制約やドメインの説明に、副問い合わせは使用できないと書いており、また、「サポートされていない機能」の項には「意図的な省略」と記載されています。 DBでの制約で実現できればシンプルかと思いましたが、アプリケーション側で制御を行うべき事なのでしょうか。 ご助言をいただけますと幸いです。 宜しくお願いいたします。
回答: > > DBでの制約で実現できればシンプルかと思いましたが、アプリケーション側で制御を行うべき事なのでしょうか。 > > > 定員を超えている事を画面でどう伝えますか? トリガーでユーザー定義エラーを発生させて、それで検知しますか? 申し込みキャンセルしたら、データを削除するのでしょうか?それとも論理削除? ストアドを介したものにするか、アプリケーション側で制御した方が自由度は高いと思います。