ID ごとに正確に 1 行が特定の列に特定の値を持つように、テーブルに何かを追加したい (トリガー?)。そのため、これが当てはまらないステートメントが実行された場合、例外がスローされ、挿入がロールバックされます。
このスキーマを見てみましょう。
ID Current Value
1 Y 0
1 N 0
1 N 2
2 Y 2
そして、私が望む制約は、IDごとに、正確に1つの行に現在の「Y」があるということです。
したがって、これらのステートメントは実行されず、適切なエラーが返されます。
insert into table values (1,'Y',1);
insert into table values (3,'N',2);
update table set current = 'N' where ID = 1;
2 つの質問があります。
この種の制約ロジックをテーブルにコーディングするのは良い考えですか、それともデータを操作するアプリケーション用に保存するのが最適ですか? なんで?
どうすればそれができますか?このような制約を作成するためにオラクルはどのようなツールを提供していますか?