MySQL触发器创建

时间:2010-04-01 17:47:08

标签: php mysql sql triggers mysql-error-1235

我有一个应用程序需要从另一个表中的PK中插入auto_increment值。我知道如何在PHP中执行此操作,但我需要在数据库级别完成此操作,因为我无法更改程序逻辑。

我是触发器的新手,所以我相信这对某人来说是一个简单的答案。以下是我到目前为止的情况:

DELIMITER //
     CREATE TRIGGER new_project AFTER INSERT ON m_quality_header
     FOR EACH ROW
     BEGIN
         INSERT INTO m_quality_detail (d_matl_qa_ID) VALUES  (NEW.h_matl_qa_ID);
     END//
DELIMITER ;

我只想将来自h_matl_qa_ID的auto_increment值的值作为新记录插入到d_matl_qa_ID中。我得到的错误是:

"This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

但是,我不想更新具有触发器的表,那么为什么我当前的代码被视为“多重”触发器呢?

这是在CentOS 5服务器(64位Intel)上运行的MySQL 5.0.45-7.el5上。如果必须,我可以修改PHP代码,但这需要是最后的手段。

2 个答案:

答案 0 :(得分:0)

如果您之前尝试过创建触发器,因为上面的状态可以发出命令

SHOW TRIGGERS;

它会告诉你。

如果是这种情况,我通常会发出的问题是

DROP TRIGGER IF EXISTS my_trigger_name;

然后重新创建触发器。

您的触发器代码,否则看起来没问题。

答案 1 :(得分:0)

DELIMITER //
    DROP TRIGGER IF EXISTS new_project//
    CREATE TRIGGER new_project AFTER INSERT ON m_quality_header
    FOR EACH ROW
    BEGIN
        INSERT INTO m_quality_detail 
        (d_matl_qa_ID, d_matl_qa_project_test_number) VALUES (LAST_INSERT_ID(),     LAST_INSERT_ID());
    END//
DELIMITER ;