データベースのOracle(オラクル)で見る、「一意制約に反しています」とは、主キーが重複してる状態です。「一意制約違反」って言ったります。
postgreSQLだと、「UNIQUE制約」ですが同じこと。
※Oracleの公式ドキュメントを見ると、「ORA-00001: 一意制約(String.String)に反しています」
※「そもそも、それって何やねん!」的な人向けに書いてます。
主キーは、学生番号とか会員番号とか伝票番号みたいに、「他と重複することがなく、空(Null)になりえない情報」のこと。もっと言えば、「それだけで1行が特定できる情報」なので、「ダブるのは許さんぜ」って話です。
一意制約違反は、主キーが重複している状態。その原因は5つ
「一意制約違反」とは、主キーが重複してる状態です。「あぁ、なるほどね」となってもらえれば、ここで終わってもいいのですが、実際の業務で起こりうる状況が、パッと5つ思いついたので、簡単に書いておきます。
「3番目と4番目と5番目だけ、やたらリアルに書かれていないか?」と思った人もいるかも。・・・まぁ、そういうことです(*´ω`)。
一意制約違反の対処方法は3つ
一意制約違反の対処方法は3つ。
本番環境で対応するとなった場合は、「ひとまず、ダブっているデータをどうするか?」から決めて、後続の処理の続行可否を判断するところから。
ちなみに、マテビューで起こったとしたら、ひよこSE(@PiyoOct)の経験上、「マテビューのつくりが悪い」というお話に落ち着く可能性が高いので、まずはマテビューのつくりから調査ですね。
※ふつうのテーブルに登録されているのに、マテビューリフレッシュしたときに落ちるってことは、「ほぼマテビューのつくりのお話でしょ」っていう理屈。たぶんね。
まとめ
データベースで見る、「一意制約(UNIQUE制約)に反しています」的なメッセージは、主キーが重複してる状態です。
緊張感ありげに書いてみましたが、実際に本番稼働しているシステムで起こらないことを祈りつつ。
基本情報技術者試験・応用情報技術者試験では、「覚えておけば点になる」というよりも、文中にごく普通に出てくるワードなので、知っておいて損はないはずです(-_-;)。
コメント