Я думаю, что проблема заключается в использовании функции CURDATE в проверке. Я запустил этот пример:
CREATE TABLE EMP<br>
(ID SMALLINT NOT NULL,<br>
NAME VARCHAR(9),<br>
DEPT SMALLINT CHECK (DEPT BETWEEN 10 AND 100),<br>
JOB CHAR(5) CHECK (JOB IN ('Sales', 'Mgr', 'Clerk')),<br>
HIREDATE DATE,<br>
SALARY DECIMAL(7,2),<br>
COMM DECIMAL(7,2),<br>
PRIMARY KEY (ID),<br>
CONSTRAINT YEARSAL CHECK (YEAR(HIREDATE) >= 1986 OR SALARY > 40500) )
и все работало просто отлично. Я изменил это на это:
CREATE TABLE landrews.EMP<br>
(ID SMALLINT NOT NULL,<br>
NAME VARCHAR(9),<br>
DEPT SMALLINT CHECK (DEPT BETWEEN 10 AND 100),<br>
JOB CHAR(5) CHECK (JOB IN ('Sales', 'Mgr', 'Clerk')),<br>
HIREDATE DATE,<br>
SALARY DECIMAL(7,2),<br>
COMM DECIMAL(7,2),<br>
PRIMARY KEY (ID),<br>
CONSTRAINT YEARSAL CHECK (HIREDATE >= CURDATE() ) )
и он отклонил его с сообщением об ошибке, которое включает следующее:
Условие CHECK использует функцию столбца или UDF