-3

本の中の質問の 1 つは、次のように尋ねます。

レッスン 2 の演習で使用したのと同じ種類のロジックを使用してCHK_Products_unitprice、 表のチェック制約をテストします。Production.Productsすべての有効な列を含む新しい行を挿入してみてください。ただし、マイナスの単価 -10 を使用してください。チェック制約をドロップします。挿入を再試行してください。テーブルにチェック制約を追加し直してください。挿入された行を更新して、単価が正の値になるようにします。ここで、チェック制約をテーブルに再度追加してみます。行がない場合、チェック制約をテーブルに戻すことはできますか? なんで?

私はそれが何を求めているのか混乱していますか?もちろん、すべての行が制約を破る場合、constarint を追加できるはずですか?

ありがとう

4

1 に答える 1

1

基本的にこれは、既存のレコードがその制約に違反しない場合にのみ、チェック制約をテーブルに追加できるという言い方です。

この場合、単価が正でなければならないというチェック制約があります。それは理にかなっているように思えます。

したがって、テーブル内のすべての単価が正の場合、制約を追加できます。ただし、単価の 1 つ以上が負の場合、SQL Server では制約を追加できません (基本的に、真実ではないことについて「すべてのデータについてこれが真実であることがわかっている」と言っているからです)。

この本の質問の最後の部分は、テーブルにデータの行がない場合に制約を追加できるかどうかを尋ねることです。これは、既存のデータと競合しない場合に制約を追加できるかどうかを尋ねるのと同じです。これに対する答えは既にわかっています。

于 2013-09-01T10:33:58.513 に答える