我想将这两个查询合并为一个:
mysql_query("INSERT INTO categories (name, parent) VALUES ('$name', '$parent')");
mysql_query("UPDATE categories SET child='$child' WHERE ID = $id");
可以吗?
答案 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");