我有两个表,如:
fee_master(id,cTId,feeType,amount,startDate,lastDate,fine_last_date,fine,status)
payroll(id,emId,date,loan,netSalary)
我正在尝试创建一个触发器,如:
DELIMITER $$
DROP TRIGGER IF EXISTS test
DELIMITER $$;
CREATE TRIGGER test
BEFORE DELETE ON fee_master
FOR EACH ROW
UPDATE payroll SET loan=OLD.amount,netSalary=OLD.fine WHERE id=18;
DELIMITER $$;
delete from fee_master where id='18';
当我运行此触发器时,数据将从fee_master中删除,但工资单未更新,我也尝试插入工资单但无法正常工作。每次都会从fee_master中删除数据。
如果我用触发器更改更新并删除查询位置,那就没关系。实际上,它不是在进行触发操作。 有什么问题?
答案 0 :(得分:1)
UPDATE
的语法不正确。多个分配由,
分隔,而不是AND
。
UPDATE payroll SET loan=OLD.amount, netSalary=OLD.fine WHERE id=18;
答案 1 :(得分:0)
可能是你在触发方面的新手。
根据您的问题,我建议您先阅读http://www.sitepoint.com/how-to-create-mysql-triggers/
中的触发基础知识提醒一下,这是一个存储过程。你不需要每次都运行触发器,我希望你在这里混淆。创建触发器后,您必须运行主查询,然后触发器自动运行下一个操作。
您的代码没问题。巴尔玛的代码也还可以。你理解的主要问题。