2016-10-16 15 views
-2

手数料分類列は、最大値99までの整数を格納でき、Comm_idという名前にする必要があります。行が追加されたときに値が指定されない場合、Comm_id列の値は自動的に10の値に設定されます。便益コード列は、最大99までの整数値を収容し、Ben_idと命名されるべきである。私はこれが正しいかどうかを知りいけない私はこれが間違っているように感じる

alter table ACCTMANAGER 
add (Comm_id varchar2(99), 
Ben_id varchar2(99)); 

+0

手数料と便益が整数の場合、なぜvarchar列を作成していますか?検査の制約で最大値を簡単に管理することができます –

+0

そして 'Comm_id'カラムにDEFAULT値がありません。 – MJH

+0

ようこそスタックオーバーフロー!良い質問をするのを助けるために私たちの[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)をよく読んで、良い答えを得てください。 –

答えて

2

ALTER TABLEのACCTMANAGERアド(Comm_id番号(2)デフォルト10、Ben_id番号(2))。

基本的に数値データ型の場合、精度と位取りがあります。 scaleが指定されていない場合、scaleは0であり、数値の後に小数点以下の桁がないことを意味します。 number(2)は、ここで2桁までしか格納できないことを意味し、defaultキーワードは列が指定されていない場合は自動的に値を設定します。

ところで、この宿題タイプのものについては、オラクルのドキュメントをお試しください。ここに良い例があります。

https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#i16209

EDITED ALTERテーブルACCTMANAGERアド(Comm_id番号(2)デフォルト10制約lowchk1チェック(comm_id> = 0)、Ben_id番号(2)制約lowchk2チェック(ben_id> = 0)) ;

申し訳ありませんが、私は自宅でOracleがインストールされていないので、構文を確認することはできません。私はただオフィスで働いているだけです。

+0

この回答は役に立ちますが、実際には正しくありません。負の数(最大-99)、および2.2などの小数も挿入できます。 Oracleはそれを2に切り捨て、ベース表に2を格納します。 – mathguy

+0

数値を正の値に制限するためのチェック制約を簡単に追加することができます。値の丸め処理をどのように処理したいかわからない場合は、0,5より小さい値を切り捨てて値を切り上げますifそれは0.5以上です... – MStp

+0

私はすでに数値が私の解で整数であることを確認する方法を示しました。その数がその切り捨てに等しいことを確認します。 – mathguy

0

@MSStpでは良い答えが得られましたが、テーブル内の悪いデータ(負の数など)が得られないようにするには、まだ制約が必要です。手数料と特典の列に0〜99の整数が含まれていて、Oracleが2.2の入力を受け付けないようにしたいという制約がある場合(これはMSの解決方法で受け入れられます。データベースに2を格納する)、Abdul Rehman Sayedがあなたの質問にコメントで示唆したように、制約を追加する必要があります。

alter table acctmanager 
    add (comm_id number(2) default 10 
        constraint check_comm (comm_id >= 0 and comm_id = trunc(comm_id)), 
      ben_id number(2) 
        constraint check_ben (ben_id >= 0 and ben_id = trunc(ben_id)) 
     ) 
; 

しかし:ただの思考..... comm_idben_id何ですか?もし彼らが特定の手数料や便益の説明/レベル/何かに何らかの種類のコードであれば、本当にチェック制約が必要ですか? comm_idben_idがプライマリキーである(またはそうでなければならない)これらのコードを説明する別のテーブルがありますか?どのような場合には、制約をチェックするのではなく、外部キーの制約が必要ですか?

関連する問題