如何使用mysql中的update / insert创建删除之前/之后的触发器?

时间:2014-07-10 05:35:20

标签: mysql triggers

我有两个表,如:

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中删除数据。

如果我用触发器更改更新并删除查询位置,那就没关系。实际上,它不是在进行触发操作。 有什么问题?

2 个答案:

答案 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/

中的触发基础知识

提醒一下,这是一个存储过程。你不需要每次都运行触发器,我希望你在这里混淆。创建触发器后,您必须运行主查询,然后触发器自动运行下一个操作。

您的代码没问题。巴尔玛的代码也还可以。你理解的主要问题。