需要一个替代解决方案,而不是从触发器调用PHP代码 我有两个表考虑表1和表2。插入表1后,我需要执行触发器

需要一个替代解决方案,而不是从触发器调用PHP代码 我有两个表考虑表1和表2。插入表1后,我需要执行触发器,php,mysql,sql,database,triggers,Php,Mysql,Sql,Database,Triggers,触发器必须做一些事情,比如使用select查询从另外两个表中检索数据。它检索多行,对检索到的数据进行一些计算,然后需要将其作为单行插入表2中 我认为不可能在触发器中执行这些操作,所以我决定从该触发器调用一个php文件来执行所有这些操作。但是有些人说,从触发器调用php实际上并不好,而且存在一些安全风险。一个简单的例子可以帮助您解决这个问题 $sql="INSERT INTO `table1` (FirstName, LastName, Age) VALUES ('$firstname', '$

触发器必须做一些事情,比如使用select查询从另外两个表中检索数据。它检索多行,对检索到的数据进行一些计算,然后需要将其作为单行插入表2中


我认为不可能在触发器中执行这些操作,所以我决定从该触发器调用一个php文件来执行所有这些操作。但是有些人说,从触发器调用php实际上并不好,而且存在一些安全风险。

一个简单的例子可以帮助您解决这个问题

$sql="INSERT INTO  `table1` (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";

$result = mysql_query($sql) ;

if($result)
{
// Record successfully inserted , place your code which needs to be executed after successful insertion
}

else
{
 // Insertion failed 
}

我假设您使用的是mysqli,而不是mysql,因为从PHP 5.5.0开始,mysql\u query就被弃用了,但这只是一个帮助您理解逻辑的示例。

好的,明白了。。在这种情况下,您需要创建一个类似这样的触发器

CREATE
    TRIGGER `event_name` BEFORE/AFTER INSERT/UPDATE/DELETE
    ON `database`.`table`
    FOR EACH ROW BEGIN
        -- trigger body
        -- this code is applied to every 
        -- inserted/updated/deleted row
    END;
此问题已得到回答,请查看下面的链接


希望这有帮助

是什么阻止了你编写php来实现这一点?不要编写触发器。将整个内容放在php中。插入->检查是否成功->执行操作thing@SNAG谢谢,但请给我解释一下,因为我是英语初学者php@SNAG我还需要这样做,即使我没有使用php插入。也就是说,如果我直接插入到db表中,或者通过将Excel导入到表中。在这种情况下,您必须从触发器调用php文件。没有别的办法。但在此之前,请确保您在php文件中所做的操作不能在触发器本身中完成。我需要这样做,即使我没有使用php插入。也就是说,如果我直接插入到db表中,或者通过将Excel导入到表中,我需要从表中检索数据,然后执行一些操作,然后我需要插入到另一个表中。这是你在问题中解释的答案,现在你说的是不同的东西。