電気通信システム用の小さなデータベースを作成しています。SQL(oracle)チェック制約の難易度 - 実装方法がわからない
テーブル(コール)の1つは、電話番号の市外局番があらかじめ定義されたリストに含まれていない場合、その番号をテーブルに追加しないでください。
私がこれを行うことについて考えているのは、コールテーブル内にチェック制約を入れて、このリストの一部ではない番号を受け入れないことです。しかし、このリストはかなり長く、より良い実装方法があれば分かりません。ここで
はリストである:これでALTER TABLE calls ADD (CONSTRAINT area_ck
CHECK area_code ("01" or "02" or "075" or "077" or "078" or "079" or "0800" or
"0845" or "0870" or (BETWEEN ("08442" AND "08449")) or
(BETWEEN ("08712" AND "08719")) or
"090" or "091" or "098")
) ;
私の二つの主な問題点は以下のとおりです:次のようにこれを行うには、私は考えることができ
01 or 02: local/national number. Ex.: 01612 338866.
075, 077, 078, 079: mobile phone number. Ex.: 07747 556647.
0800: free number. Ex.: 08002 223344.
0845, 0870: special service. Ex.: 08451 423456.
08442 to 08449: 5p special service. Ex.: 08444 404404.
08712 to 08719: 10p special service. Ex.: 08713 457893.
090, 091, 098: premium rate special service. Ex.: 09119 229595.
唯一の方法はある
- これは正しく実装されていないためエラーです
- 私がmodiそれが動作するまで少しそれを、それはまだ私の仕事を解決しようとすることについて長い道のりだろうか?
さらに高度なチェックをしたい場合は、Ofcomに[ダウンロード可能なファイル]があります(http://www.ofcom.org.uk/static/)。 numbering/codelist.zip)、またはすべてを[zipファイル](http://www.ofcom.org.uk/static/numbering/codelist.zip)に入れてください。潜在的には、ファイルを外部表として使用し、それらのファイル全体に有効なコードのビューを作成できます。私はそれがあなたの問題の過剰なものだと確信していますが、しばらく関心があるかもしれません。なぜあなたが '03 'の数字を除外したのか不思議です。 –