あるインタビューで、重複した値を列に挿入しようとしたときに例外をスローするテーブルを作成する方法を尋ねられましたが、制約は使用しないでください。これはオラクルにあります。
ばかげた質問かもしれませんが、どうすればこれを達成できますか?
ありがとう。
あるインタビューで、重複した値を列に挿入しようとしたときに例外をスローするテーブルを作成する方法を尋ねられましたが、制約は使用しないでください。これはオラクルにあります。
ばかげた質問かもしれませんが、どうすればこれを達成できますか?
ありがとう。
テーブルの一意のインデックスは、制約を作成せずに一意性の要件を強制します (一意の制約を作成すると、適切なインデックスがまだ存在しない場合にインデックスが作成されます)。しかし、それは質問の趣旨に反する可能性が非常に高く、やや微妙な違いです。候補者がその違いを理解しているかどうかを調査するインタビュアーが、質問をするためにこれよりも良い方法を選択することを願っています. 「一意の制約と一意のインデックスの違いは何ですか」と尋ねることは、候補者がばかげた要求の背後にある意図を解析しようとする必要のない、有用な会話のきっかけになります。
それは非常に悪い考えですが、適切なシリアライゼーションを使用するか、複数のセッションが同時に重複する行を挿入する可能性を無視することにより、テーブルにトリガーを記述して、重複する行がある場合に例外をスローすることができます。これはトリガーの非常に不適切な使用法ですが、実行することはできます。
また、コミット時に更新され、複数回発生したキーのみを含むマテリアライズド ビューを作成し、マテリアライズド ビューの制約またはマテリアライズド ビューのトリガーを使用して例外をスローすることもできます。それはおそらくトリガーソリューションよりもさらに合理的ではありませんが(制約のあるマテリアライズドビューはトリガーよりも好ましいかもしれないと主張できます)、機能させることができます。