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

Php 如何以正确的方式在mysql中创建存储过程,php,mysql,stored-procedures,mysqli,Php,Mysql,Stored Procedures,Mysqli,PHP mysqli存储过程快速指南,: 这是否会删除该程序,然后将其替换?这是正确的方法吗?删除它有什么意义?删除它不会否定在MySQL连接期间可以调用的过程的全部意义吗 必须先删除“旧”过程,否则创建将失败,并出现“已存在”错误。对于数据库中的几乎每个对象都是一样的,例如 CREATE TABLE foo ... // creates the table CREATE TABLE foo ... // will **NOT** replace the one just created

PHP mysqli存储过程快速指南,:


这是否会删除该程序,然后将其替换?这是正确的方法吗?删除它有什么意义?删除它不会否定在MySQL连接期间可以调用的过程的全部意义吗

必须先删除“旧”过程,否则创建将失败,并出现“已存在”错误。对于数据库中的几乎每个对象都是一样的,例如

CREATE TABLE foo ...   // creates the table
CREATE TABLE foo ...   // will **NOT** replace the one just created
您不能仅仅通过重新定义表/proc/db来“覆盖”它。你必须先去掉原来的那一个

考虑一下,如果某家大型银行的某位糟糕的DBA不小心跑掉了,会出现混乱

CREATE DATABASE clients;

因为数据库引擎用这个新的空数据库替换了原来的数据库,所以他们的整个客户端数据库都被破坏了。

AFAIK删除这个过程(如果它存在)并从头开始重新创建它,这是它在所有SQL数据库系统中的工作方式。你知道为什么必须删除它吗?这只是一种良好的做法吗?如果是这样的话,为什么呢?我想这样做会更简单,而不是有一些复杂的编辑机制。通常,您不会每次建立MySQL连接时都创建存储过程;在Oracle中,语法包括CREATE或REPLACE,因此从技术上讲,不是拖放和重新创建。因此,如果每个连接的存储过程在每个不同的连接中都被单独记住,并且我知道我从来没有两个同名的过程,我可以测试这个过程是否存在,并且只在它不存在时创建它?不需要我删除该过程(如果它确实存在)?类似于Oracle中的CREATE或REPLACE?不知道Oracle的具体情况,但通常存储过程是永久存储的,可用于任何/所有连接/用户。可用于任何/所有连接/用户,但仅用于该数据库?
CREATE DATABASE clients;