2009-02-06 7 views
2

Я только начинаю изучать SQL и наткнулся на первое препятствие, я не могу создать таблицу. Ниже приведен пример кода. Ошибка, которую я получаю при запуске оператора, ссылается на строку 7, указывающую на наличие проблемы с «реляционным оператором». Цель строка 7 - проверить, что возраст человека больше 18.Ошибка SQL Create Table

Я использую Oracle (неуверенный, если это будет иметь значение). Надеюсь, кто-то может указать мне в правильном направлении.

1. CREATE TABLE employee 
2. (
3. empID   VARCHAR2(20) NOT NULL primary key, 
4. surname  VARCHAR2(15) NOT NULL CHECK(surname=UPPER(surname)), 
5. deptCode  CHAR(5) NOT NULL CHECK(deptCode=UPPER(deptCode)), 
6. empYear  NUMBER(1,0) NOT NULL CHECK(empYear >= 1 AND empYear <= 4), 
7. birthDate  DATE NOT NULL CHECK((SYSDATE - birthDate) /365) >= 18 
8. ); 

спасибо.

ответ

8

Вы не можете определить ограничение CHECK, которое ссылается на функцию типа SYSDATE.

В документации Oracle есть обсуждение restrictions on CHECK constraints

+0

Спасибо за вашу помощь, я буду смотреть в него. Спасибо. – Ronnie

1

Проверьте скобки.

DATE NOT NULL CHECK(((SYSDATE - birthDate) /365) >= 18) 

EDIT: Как указал Джастин, вы не можете использовать SYSDATE здесь.