0

Person(SSN、State、Name)の関係で、タプルベースのチェックを追加します。PersonのStateがNYの場合、SSNの最初の3桁は「050」から「134」の間にある必要があります。(ヒント:SQLでLEFT関数を使用してください)。

CREATE TABLE Person (
    SSN   INT PRIMARY KEY,
    State   CHAR(50),
    Name  CHAR(100),
    CHECK ( 
        SELECT LEFT (SSN, 3) AS FirstThreeDigits, SSN FROM Person,
        WHERE Person.State == ‘NY’) between '050' and between '134'
);

ここでのCHECK条件に満足していません。これが条件付きチェックを行う正しい方法であるかどうかはわかりません。誰かがこれを確認できますか?そうでない場合、条件付きチェックをどのように行いますか?

これが必要です:

if state == 'NY', perform CHECK

トリガーが必要ですか?新しい挿入/更新が発生した場合は、値を確認することを考えていました。しかし、質問はそれを求めていません。

4

1 に答える 1

1

わかりました。一般的ですが、DDLは通常はそうではありませんが、SQLServerのチェック制約に関するドキュメントをガイドとして使用できます。

論理演算子に基づいてTRUEまたはFALSEを返す任意の論理(ブール)式を使用して、CHECK制約を作成できます。前の例の場合、論理式は次のとおりです。
salary >= 15000 AND salary <= 100000.

上記のドキュメントの例は、SELECTステートメントではなく、式であることに注意してください。つまり、必要なのは、TRUEを返す式を考え出すことだけです。

次のすべてが当てはまる場合

  1. 州はニューヨークです
  2. SSNの左3桁は=>'050'です
  3. SSNの左3桁は<=134です。

または

  1. サテはニューヨークではありません

一連の論理式をParensでグループ化できることを忘れないでください

例えば

(Group of logical expressions) OR (Group of logical expressions)

難しいことではありません

于 2012-05-05T03:45:59.447 に答える