2010-08-30 38 views
0

当我试图创建触发器下面给出,MySQL错误上触发创作与提取功能

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; 

我获得以下错误,

ERROR 1064(42000):你有一个错误你的SQL语法;检查对应于你的MySQL服务器版本使用附近的正确语法手册“FROM FiscalYearTable1.start_date)= FiscalYearTable1.fiscal_year - 1)或(EXTRA”在1号线

我想不出是什么错误任何想法感谢

回答

0

是这样的:?

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 ; 
+0

确定..是工作GR8 ..但我不知道什么是提取问题的任何想法 – robert 2010-08-31 00:56:13

+0

if..then ..?结束if;语法错误可能 - 您的原始代码有点难以阅读,如果您认为我的解决方案适用于您,可以接受答案 - 谢谢:) – 2010-08-31 01:51:18