PHP mysqli 存储过程快速指南,http://php.net/manual/en/mysqli.quickstart.stored-procedures.php :
if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
!$mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;")) {
echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
这不是删除程序然后替换吗?这是正确的方法吗?删除它有什么意义?删除它是否不会否定拥有一个可以在 MySQL 连接期间调用的过程的全部意义?
最佳答案
您必须首先删除“旧”过程,否则 CREATE 将失败并出现“已存在”错误。对于数据库中的几乎每个对象来说都是一样的,例如
CREATE TABLE foo ... // creates the table
CREATE TABLE foo ... // will **NOT** replace the one just created
您不能仅通过重新定义来“覆盖”表/proc/db。您必须先删除原始的。
考虑一下,如果一家大银行的某个可怜的 DBA 意外运行,会发生什么困惑
CREATE DATABASE clients;
并废弃了他们的整个客户端数据库,因为数据库引擎用这个新的空数据库替换了原始数据库。
关于php - 如何以正确的方式在mysql中创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580832/