2010-09-10 5 views
1

Je suis nouveau à Oracle, en essayant de créer une table comme suit:Oracle Émission de chèques avec Constraint to_date

create table Movies (
    Title varchar2 primary key, 
    Rating NUMBER CONSTRAINT Rating_CHK CHECK (Rating BETWEEN 0 AND 10), 
    Length NUMBER CONSTRAINT Length_CHK CHECK (Length > 0), 
    ReleaseDate DATE CONSTRAINT RDATE_CHK 
       CHECK (ReleaseDate > to_date('1/1/1900', 'DD/Month/YYYY')), 
    CONSTRAINT title_pk PRIMARY KEY (Title) 
) 

par ma mission, le ReleaseDate doit avoir une contrainte application dates seulement après 1/1/1900 La contribution que mon professeur nous a donnée pour les dates est la suivante: 13 août 2010

L'un de vos experts peut-il voir où se situe mon problème?

+0

Le message d'erreur et votre SQL aurait du sens, mais je suppose que vous n'avez pas analysé la chaîne d'entrée de votre prof correctement. – ZeissS

Répondre

4

La spécification pour la colonne Titre est incorrecte, ainsi que la combinaison de chaîne de date/modèle de format dans votre appel de fonction to_date. Spécifiez une longueur de colonne pour TITLE et corrigez la chaîne de date pour qu'elle corresponde au modèle de format.

Essayez ceci:

create table Movies (
    Title varchar2(100), 
    Rating NUMBER CONSTRAINT Rating_CHK CHECK (Rating BETWEEN 0 AND 10), 
    Length NUMBER CONSTRAINT Length_CHK CHECK (Length > 0), 
    ReleaseDate date CONSTRAINT RDATE_CHK CHECK (ReleaseDate > to_date('1/January/1900', 'DD/Month/YYYY')), 
    CONSTRAINT title_pk PRIMARY KEY (Title) 
) 

Mise à jour: En aparté, le titre est une clé primaire moche. Jamais entendu parler de deux films différents avec le même titre? Pouvez-vous dire "refaire"?

Autre modification. Je suppose que puisque votre prof vous a donné le format de date, vous devriez faire correspondre la chaîne de date au modèle de format. J'ai mis à jour ma réponse.

+0

D'accord - malheureusement, je ne l'ai pas suffisamment précisé dans ma description, mais cette question est basée sur un devoir - le professeur a trouvé la clé primaire et les contraintes. –

+0

Merci - exactement ce dont j'avais besoin. Je suis sur le point de poster une autre question, si vous vous sentez généreux et que vous voulez aider un débutant une fois de plus:) –

+0

Je suis sûr que quelqu'un vous aidera ;-) – DCookie

2

Je pense que 'Month' dans TO_DATE recherche un nom de mois - pas un nombre. Modifiez le deuxième 1 en janvier ou modifiez Mois en MM.