мне нужно проверить перед вставкой в колонку «года» из (академического доклада), что это не менее года «дата регистрации» колонок в (студенте)Сравнение двух значений из разных таблиц - MySql
моих таблиц :
CREATE TABLE STUDENT
(
BCN INT (10) ,
Enrollment_Date timestamp not null default CURRENT_TIMESTAMP,
primary key (BCN),
);
CREATE TABLE ACADEMIC_REPORT
(
Stud_Num INT(10) ,
Year year ,
primary key (Stud_Num , Year),
foreign key (Stud_Num) references STUDENT(BCN)
ON DELETE restrict ON UPDATE CASCADE
);
Я стараюсь это:
/* ACADEMIC_REPORT._Year Constraint "BEFORE INSERT" */
delimiter //
CREATE TRIGGER ReportYearBIN BEFORE INSERT ON ACADEMIC_REPORT
FOR EACH ROW
BEGIN
declare num int(10);
SET num= (SELECT BCN
FROM STUDENT , ACADEMIC_REPORT
WHERE BCN = ACADEMIC_REPORT.Stud_Num);
IF (ACADEMIC_REPORT.Year < YEAR(num.Enrollment_Date))
THEN
SIGNAL SQLSTATE '10000'
SET MESSAGE_TEXT = 'Error....!';
END IF;
END;
// delimiter ;
но вызывает эту ошибку во время вставки
Error Code: 1054. Unknown column 'ACADEMIC_REPORT.Year' in 'field list'
Как я могу сделать это ограничение?
Использование MySQL Workbench 6.3
Спасибо заранее.
вам, возможно, придется сделать это с помощью триггеров см http://dba.stackexchange.com/questions/9662/check-constraint-does-not-work – FuzzyTree
' new' является ссылкой на значения входящей строки для базовой таблицы триггеров. Вам нужно «SELECT» от ученика, чтобы получить значения, с которыми вы можете сравнивать. – JRD