2016-03-11 124 views
0

如果我單獨創建這兩個MySQL觸發器,兩者都執行正常。但我沒有設法將它們結合起來,以便能夠延長持續時間x率。Mysql觸發器,選擇並更新

DROP TRIGGER IF EXTERNTS deduct_balance; CREATE DEFINER = root @localhost TRIGGER deduct_balance 更新後ON transactions FOR EACH ROW SET @Rate =(SELECT速率FROM語言WHERE languages.idlanguages = contracts.languages_idlanguajes);

DROP TRIGGER IF EXTERNTS deduct_balance; CREATE DEFINER = root @localhost TRIGGER deduct_balance UPDATE ON transactions FOR EACH ROW AFTER UPDATE SET合同= balance平衡 - (UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date))/ 60 WHERE contracts.idcontracts =新.contracts_idcontracts

COMBINED(I GET ERROR) DROP TRIGGER IF EXTERNTS deduct_balance; CREATE DEFINER = root @localhost TRIGGER deduct_balance 更新後ON transactions FOR EACH ROW SET @Rate =(SELECT速率FROM語言WHERE languages.idlanguages = contracts.languages_idlanguajes); UPDATE contracts SET balance = balance - (UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date))/ 60; WHERE contracts.idcontracts = new.contracts_idcontracts

任何想法?

我得到這個錯誤 錯誤 CONSULTA SQL:

UPDATE合同SET balance =平衡 - (UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date))/ 60; 的MySQL公頃dicho:Documentación

1054 - 在 '字段列表'

+0

你會得到什麼錯誤? – dgig

+0

你有額外的;在COMBINED查詢中的WHERE之前。 'balance - (UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date))/ 60; WHERE' – Tin

+0

正確的;不應該在那裏,但錯誤仍然存​​在 – Victor

回答

0

未知列 'NEW.end_date' 它的工作是這樣的: UPDATE合同 SET balance =平衡 - (((UNIX_TIMESTAMP(NEW.end_date ) - UNIX_TIMESTAMP(OLD.start_date))/ 60)*(SELECT rates FROM languages WHERE languages.idlanguages = new.languages_idlanguages)) WHERE contracts.idcontracts = new.contracts_idcontracts