2017-10-28 18 views
3

私は、データベースの基礎コースをやって、ポスト評価の質問の1 AMは次のとおりです。SQL Serverの:理解デフォルト値

デフォルト値は、NOT NULL列に設定する必要があります。 True | False

私は偽と答えたので答えが真であり、間違っていた、私はなぜそれが本当であるのか分からないということが導かれました。

質問だった場合:新しい列を追加するには、ALTER TABLEを使用している場合

デフォルト値がNOT NULL列に設定する必要があります。

それから、私はそれが本当である理由を知っています。質問を誤読しているのですか、他のところで何かを誤解していますか?

ご協力いただきますようお願い申し上げます。 Lee。

+0

_Default values_は、値が_NULL_の場合、_Default values_ instedを取ることを意味します。したがって、列を_NOT NULL_に設定するのは正しいですか? – Sami

+1

私はあなたが正しいと思います。売り切れの商品が入ったテーブルがあるとしましょう。 NOT NULL列PRICEのデフォルト値として設定できるものは何ですか? –

+0

返信いただきありがとうございます。私たちはfirstNameとlastNameカラムを持っていて、どちらもNULLではないとすれば、デフォルト値はそこにありますか?確かにサーバーが必要な値に応答できるようにしますか? –

答えて

2

あなたは正しいですか?カラムがnot nullと宣言されている場合、デフォルト定義の必要はありません。必要な構文は、それがより次のようになり

<column_definition> ::= 
column_name <data_type> 
    . . . 
    [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ] 
    . . . 
    [ NULL | NOT NULL ] 

場合:

<column_definition> ::= 
column_name <data_type> 
    . . . 
    [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ] 
    . . . 
    [ NULL | NOT NULL [CONSTRAINT constraint_name] DEFAULT constant_expression ] 

私はありませんあなたがsyntax diagram for create tableを見ればこれは非常に明白ですnot nullカラムのデフォルトの定義が良いアイデアであることを確かめてください。多くの場合、insertが何らかの人為的な値を挿入するのではなく失敗するようにします。

のみ関係は時にデータきaltering tablesです:新しい列がnull値を許可しないと、テーブルが空 でない場合は、DEFAULT定義は新しい列に

追加しなければならない、と 新しい列は、既存の各行の新しい列 にデフォルト値で自動的に読み込まれます。

これはむしろ明らかです。既存の行には新しい列の値がNULLと指定されていますが、NOT NULLという制約では許可されないため、DEFAULTが必要です。

+0

あなたの説明のために多くのありがとう。私は質問を設定した人々に電子メールを送り、今度は行から列に質問を修正し、答えを修正しました。リー –

関連する問題