2010-09-10 5 views
1

Так что я новичок в Oracle, пытаясь создать таблицу следующим образом:Oracle проверочного ограничения Проблемы с 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) 
) 

За мою уступку ReleaseDate должен иметь ограничение принуждая только даты после 1/1/1900. Вход, который мой профессор дал нам для дат, выглядит следующим образом: 13 августа 2010 года

Может ли один из вас, экспертов, увидеть, где моя проблема?

+0

Сообщение об ошибке и ваш SQL будет иметь смысл, но я бы предположил, что вы не правильно разобрали входную строку своего профи. – ZeissS

ответ

4

Неверная спецификация для столбца Название, а также комбинация модели строки даты/формата в вашем вызове функции to_date. Укажите длину столбца для TITLE и исправьте строку даты в соответствии с моделью формата.

Попробуйте это:

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

Update: Как в стороне, название паршивый первичный ключ. Вы когда-нибудь слышали о двух разных фильмах с тем же названием? Можете ли вы сказать «римейк»?

Другое редактирование. Думаю, так как ваш проф дал вам формат даты, вы должны сделать строку даты совпадающей с моделью формата. Я обновил свой ответ.

+0

Согласен - к сожалению, я не уточнил в своем описании, но этот вопрос основан на домашнем задании - профессор придумал основной ключ и ограничения. –

+0

Спасибо - именно то, что мне нужно. Я собираюсь опубликовать еще один вопрос, если вы чувствуете себя щедрым и хотите помочь новичку еще раз:) –

+0

Я уверен, что NOMEBODY здесь поможет ;-) – DCookie

2

Я думаю, что «Месяц» в TO_DATE ищет название месяца - не число. Либо изменить второй 1 на январь, либо изменить месяц на ММ.

Смежные вопросы