2010-08-30 31 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