如何将两个mysql查询合并为一个?

时间:2010-03-26 15:58:11

标签: php mysql

我想将这两个查询合并为一个:

mysql_query("INSERT INTO categories (name, parent) VALUES ('$name', '$parent')");

mysql_query("UPDATE categories SET child='$child' WHERE ID = $id");

可以吗?

2 个答案:

答案 0 :(得分:1)

在MySQL中创建一个触发器。

如果不存在父类别或捕获异常,则不执行任何检查,以下操作应该可以解决问题。将“dbname”替换为您的数据库。

DROP TRIGGER IF EXISTS `dbname`.`update_parent`//
CREATE TRIGGER `dbname`.`categories` AFTER INSERT ON `dbname`.`categories`
FOR EACH ROW BEGIN
UPDATE categories SET child = NEW.ID WHERE ID = NEW.parent;
END
//

当触发器正常运行时,将在INSERT之后自动调用更新,因此您只需运行所有操作:

mysql_query("INSERT INTO categories (name, parent) VALUES ('$name', '$parent')");

答案 1 :(得分:0)

虽然我不知道这是否适合您的问题,但实际上可以通过使用MySQLi扩展名将多个查询合并为一个(它不能与mysql扩展一起使用)

mysqli_multi_query($connection, "INSERT INTO a (attrib1, attrib2) VALUES ('$a', '$b');UPDATE b SET attrib3='$c' WHERE attrib4 = $d");