1

我有一个应用程序,我需要从另一个表中的 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 代码,但这必须是最后的手段。

4

2 回答 2

0

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

SHOW TRIGGERS;

它会告诉你。

如果是这样的话,我通常做的是问题

DROP TRIGGER IF EXISTS my_trigger_name;

然后重新创建触发器。

否则,您的触发代码看起来不错。

于 2010-04-01T18:32:42.170 回答
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 ;
于 2010-04-01T18:49:40.910 回答