ここで状況は、私はpostgresqlを使ってデータベースを設定しています。私のデータベースにはリーグがあり、リーグに関連したチームがいくつかあります。特定のリーグに関連付けることのできるチームの最小数はどのように設定できますか?postgresql与えられたテーブルで利用可能な外部キーの数を制限する
-2
A
答えて
0
これは制約として設定しません。代わりに、これをフラグとしてレベルに設定することができます。このフラグは、リーグがアクティブになるのに十分なチームがあるかどうかを指定します。
フラグを維持する1つの方法は、リーグを変更する方法でチームを挿入、削除、または更新するたびにトリガーを使用して値を更新することです。
1
トリガーでこれを行うことができます。チームを追加するとき(INSERT
ed)、チームを変更するために(DELETE
d)またはUPDATE
dを削除した場合、変更のタイプに応じて、トリガーでSELECT 1 FROM league WHERE league_id = NEW.team_id FOR UPDATE
に関連するリーグの行を新規チームおよび/または古いチームにロックする必要があります。
次に、AFTER
トリガーは、制約が満たされているかどうかを確認するためにCOUNT
クエリを実行し、そうでない場合は、RAISE
を例外とします。
リーグに「アクティブ」または「非アクティブ」をマークするフィールドが必要です。このフィールドは、アクティブなときにのみ制約がチェックされます。そうでなければ、最初の数チームを作成できません。
関連する問題
- 1. 外部キー制約を与えるためにテーブルを変更する
- 2. DTPickersの利用可能日数を制限する方法は?
- 3. Djangoフォームセットで利用可能な選択肢を制限する
- 4. 与えられた列の次の利用可能なセルに書き込む
- 5. PostgreSQL:複数のテーブルに影響を与える制約
- 6. Postgresql:外部キー制約のためのアクションを変更する
- 7. R - 与えられたプロット "象限"内の点に関数を制限する
- 8. 制限数Rubyで与えられた値
- 9. Postgresql - 参照先テーブルに与えられたキーと一致する唯一の制約はありません。自分のテーブルからキーを参照する
- 10. NULL可能フィールドで外部キー制約が失敗する
- 11. PostgreSQLの機能外部キーはここ
- 12. Criteria API外部キーの制限
- 13. POSTGRESQL外部キー2つの異なるテーブルの主キーを参照する
- 14. jQuery |与えられたセレクタで最初に利用可能なクラスを取得する方法?
- 15. 与えられた外部キーを持つすべてのテーブルを見つける
- 16. null可能な外部キーの追加。
- 17. 受け入れ可能な外部キーの使用
- 18. 外部キーに影響を与えずにプライマリキーを削除する他のテーブルに制約する
- 19. Entity Framework null null可能な外部キー
- 20. Laravel - リスト外の予約や利用可能なテーブルを
- 21. テーブルに単純な外部キー制約を追加する
- 22. PostgreSQLとDjangoの許可が拒否されました。 PostgreSQLユーザ管理者に権利を与える
- 23. PostgreSQL:既存のテーブルの新しいテーブルの外部キー
- 24. SQL Serverに外部キーのない2つのテーブルを結合することは可能ですか?簡単な例を与える
- 25. pg_dumpからテーブル上の外部キー制約を強制する--exclude-table-data
- 26. 外部キーを使用して他のテーブルから値を取得することが可能なLINQクエリ
- 27. doctrine:schema:updateは利用可能なエンティティのサブセットに制限できますか?
- 28. 複数のnull可能な複合外部キー
- 29. Entity Framework 4とSQL Server 2008複数の可能な外部キー
- 30. Sidekiq:利用可能なスレッドの数を数えよう
最小値を指定することはほとんどありません。 – zerkms
それをデータベース制約(各リーグはNチームがなければならない)にしても、Nが1より大きいと仮定して、新しいリーグにどのようにチームを追加しますか?このようなデータベースの制約は、多くの予期しない方法で人生を困難にする可能性があります。 –