如何以正确的方式在mysql中创建存储过程

时间:2013-07-10 21:03:05

标签: php mysql stored-procedures mysqli

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连接期间可以调用的过程的全部意义吗?

1 个答案:

答案 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;

并删除了整个客户端数据库,因为数据库引擎用这个新的空数据库替换了原始数据库。