MySQL ошибка при создании триггера с функцией извлечения - PullRequest
0 голосов
/ 31 августа 2010

Когда я пытаюсь создать триггер, как указано ниже,

CREATE TRIGGER FiscalYearTable1_bi 
BEFORE INSERT  
ON FiscalYearTable1 
FOR EACH ROW  
     IF ( 
             ( EXTRACT (YEAR FROM FiscalYearTable1.start_date) !=  FiscalYearTable1.fiscal_year - 1) OR
            (EXTRACT (MONTH FROM FiscalYearTable1.start_date) != 04) OR
            (EXTRACT (DAY FROM FiscalYearTable1.start_date) != 01) 
       ) 
          SET FiscalYearTable1.fiscal_year = 1/0;

Я получаю следующую ошибку,

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'FROM FiscalYearTable1.start_date)! = FiscalYearTable1.fiscal_year - 1) ИЛИ (ДОПОЛНИТЕЛЬНО' в строке 1

Я не могу понять, в чем ошибка. Есть идеи? Спасибо

1 Ответ

0 голосов
/ 31 августа 2010

как то так:

delimiter #

create trigger FiscalYearTable1_before_ins_trig before insert on FiscalYearTable1
for each row
begin

declare y smallint unsigned default 0;
declare m tinyint unsigned default 0;
declare d tinyint unsigned default 0;

  set y = year(new.start_date);
  set m = month(new.start_date);
  set d = day(new.start_date);

  -- whatever logic you require...
  if y != new.fiscal_year-1 or m != 4 or d != 1 then
    set new.fiscal_year = null; 
  end if;

end#

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