2015-09-06 63 views
1

由於語法錯誤,Mysql不會允許我創建以下觸發器,我認爲按照我編寫的if語句的方式,任何人都可以幫助確定這應該看起來像什麼嗎?在if語句上觸發語法錯誤

DELIMITTER $$ 
CREATE TRIGGER gl_bal_upd_update AFTER UPDATE ON journal_line 
FOR EACH ROW 
BEGIN 
DECLARE curr varchar(10); 
DECLARE period varchar(10); 

select period_name,currency 
into period,curr 
from journal_header jh 
where jh.journal_header_id = NEW.journal_header_id; 

INSERT IGNORE INTO general_ledger_balance (account_comb_id,period_name)values(NEW.account_comb_id,period); 

UPDATE general_ledger_balance glb 
SET glb.debit = IF(NEW.debit + glb.debit - OLD.debit - NEW.credit - glb.credit + OLD.credit > 0, NEW.debit + glb.debit - OLD.debit - NEW.credit - glb.credit + OLD.credit,0)(
,glb.credit = IF(NEW.credit + glb.credit - OLD.credit -NEW.debit - glb.debit + OLD.debit > 0, NEW.credit + glb.credit - OLD.credit - NEW.debit - glb.debit + OLD.debit,0) 
,glb.currency = curr 
WHERE glb.account_comb_id = NEW.account_comb_id 
AND glb.period_name = period; 

END $$ 

DELIMITER ; 

回答

0

您的分隔符拼寫錯誤,在行末尾隨機加上左括號。試試這個,它通過語法錯誤得到:

DELIMITER $$ 
CREATE TRIGGER gl_bal_upd_update AFTER UPDATE ON journal_line 
FOR EACH ROW 
BEGIN 
DECLARE curr varchar(10); 
DECLARE period varchar(10); 

select period_name,currency 
into period,curr 
from journal_header jh 
where jh.journal_header_id = NEW.journal_header_id; 

INSERT IGNORE INTO general_ledger_balance (account_comb_id,period_name)values(NEW.account_comb_id,period); 

UPDATE general_ledger_balance glb 
SET glb.debit = IF(NEW.debit + glb.debit - OLD.debit - NEW.credit - glb.credit + OLD.credit > 0, NEW.debit + glb.debit - OLD.debit - NEW.credit - glb.credit + OLD.credit,0) 
,glb.credit = IF(NEW.credit + glb.credit - OLD.credit -NEW.debit - glb.debit + OLD.debit > 0, NEW.credit + glb.credit - OLD.credit - NEW.debit - glb.debit + OLD.debit,0) 
,glb.currency = curr 
WHERE glb.account_comb_id = NEW.account_comb_id 
AND glb.period_name = period; 

END $$ 
DELIMITER ; 
+0

嗨,謝謝。這在句法上是正確的,儘管設置的借方和貸方不起作用。 –

+0

爲我或其他人做一個sqlfiddle,或者打開一個新的問題 – Drew

+0

嗨,實際上認爲它正在工作,更新並沒有改變借方或貸方,但這是正確的,因爲沒有改變保存!再次感謝。 –