Проблема ограничения проверки Oracle с датой to_date - PullRequest
1 голос
/ 10 сентября 2010

Итак, я новичок в Oracle, пытаюсь создать таблицу следующим образом:

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 должен иметь ограничение, применяемое только к датам после 01.01.1900. Входные данные, которые мой профессор дал нам для дат, следующие: 13 августа 2010 г.

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

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Неверная спецификация для столбца Заголовок, а также комбинация строки даты / модели формата в вызове функции 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)
)

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

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

2 голосов
/ 10 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...