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连接期间可以调用的过程的全部意义吗?
答案 0 :(得分:0)
您必须先删除“旧”过程,否则CREATE将失败并显示“已存在”错误。对于数据库中的几乎每个对象都是一样的,例如
CREATE TABLE foo ... // creates the table
CREATE TABLE foo ... // will **NOT** replace the one just created
你不能仅仅通过重新定义来覆盖表/ proc / db。你必须先删掉原来的。
如果主要银行的一些可怜的DBA意外运行,就会发生混乱
CREATE DATABASE clients;
并删除了整个客户端数据库,因为数据库引擎用这个新的空数据库替换了原始数据库。