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