2012-05-05 2 views
0

En ce qui concerne la personne (NSS, État, Nom), ajoutez un contrôle à base tuple: si l'état d'une personne est NY, les trois premiers chiffres de son SSN doit soit entre «050» et «134». (Indice: utilisez la fonction GAUCHE en SQL).Ajouter un chèque à base tuple à cette relation

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' 
); 

Je ne suis pas à l'aise avec la condition CHECK ici. Je ne suis pas sûr que ce soit la bonne façon de faire un contrôle conditionnel. Quelqu'un peut-il vérifier cela? Sinon, comment faisons-nous un contrôle conditionnel?

Nous avons besoin:

if state == 'NY', perform CHECK 

Avons-nous besoin d'un déclencheur? Je pensais que si une nouvelle insertion/mise à jour se produit, vérifiez la valeur. Mais la question ne le demande pas.

+0

Quelle est l'arrière? –

+0

@Conrad Frix C'est juste une déclaration SQL. Non spécifique à la plate-forme. C'est un cours d'introduction. Merci. Donc, je pense que toutes les instructions SQL générales seront valides. – CppLearner

Répondre

1

Ok, donc son générique, mais DDL est généralement pas, mais permet d'utiliser le doc sur SQL Server CHECK Constraints comme guide de toute façon

Vous pouvez créer une contrainte CHECK avec une logique (Boolean) expression qui renvoie VRAI ou FAUX basé sur les opérateurs logiques. Pour l'exemple précédent, l'expression logique est la suivante:
salary >= 15000 AND salary <= 100000.

Notez que l'exemple ci-dessus de la documentation est pas une instruction SELECT, mais et d'expression. Cela signifie que tout ce que vous devez faire est de trouver une expression qui retourne TRUE

lorsque toutes les conditions suivantes sont vraies

  1. État est NY
  2. La gauche trois chiffres du SSN est => ' 050'
  3. les gauche trois chiffres du SSN est < = 134.

Ou

  1. Sate est pas NY

Se souvenir que vous pouvez regrouper un ensemble d'expressions logiques dans une parens

par exemple

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

Il ne devrait pas être trop difficile

+0

Merci pour l'indice. Je suis en difficulté avec le fait que la vérification est effectuée UNIQUEMENT lorsque l'état est == NY, alors nous faisons la vérification sur les chiffres. Comment je fais ça? Si les trois sont fasle, la vérification sera fausse et rejettera la modification. Ce n'est pas ce que le problème veut, je pense. Je pense que je peux utiliser 'entre 'pour vérifier les chiffres? – CppLearner

+0

Ahhh. J'ai tendance à compliquer les choses. Merci Conrad! Tu as raison. :(Merci.Vous avez donné un gros indice avant. – CppLearner

Questions connexes