Php MySQL触发器创建

Php MySQL触发器创建,php,mysql,sql,triggers,mysql-error-1235,Php,Mysql,Sql,Triggers,Mysql Error 1235,我有一个应用程序,需要在另一个表中插入PK的自动增量值。我知道如何在PHP中实现这一点,但我需要在DB级别实现这一点,因为我无法更改程序逻辑 我对触发器还不熟悉,所以我相信这对某些人来说是一个简单的答案。以下是我到目前为止的情况: DELIMITER // CREATE TRIGGER new_project AFTER INSERT ON m_quality_header FOR EACH ROW BEGIN INSERT INTO m_qual

我有一个应用程序,需要在另一个表中插入PK的自动增量值。我知道如何在PHP中实现这一点,但我需要在DB级别实现这一点,因为我无法更改程序逻辑

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

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的自动增量值作为新记录插入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代码,但这必须是最后的手段。

如果您以前尝试过创建触发器,如上文outis所述,您可以发出该命令

SHOW TRIGGERS;
它会告诉你的

如果是这样的话,我通常做的就是解决这个问题

DROP TRIGGER IF EXISTS my_trigger_name;
然后重新创建触发器


否则,您的触发器代码看起来正常。

在m_quality_标题插入后是否定义了另一个
触发器?使用
SHOW TRIGGERS WHERE event='INSERT'和timening='AFTER'以及'table'='m_quality_header'
检查()。猜测一下,每行之前的
被认为是一个多触发器,因为它为每一插入行触发一次。好的,我的触发器现在工作正常了。。以下是我需要的最终代码,以实现我想要的工作方式:分隔符//删除触发器(如果存在)新的\u项目//在插入m\u quality\u标题后为每行创建触发器新的\u项目开始插入m\u quality\u细节(d_matl\u qa\u ID,d_matl\u qa\u项目测试编号)值(LAST_INSERT_ID(),LAST_INSERT_ID());结束//分隔符;
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 ;