[英]How to efficiently check stored procedure for existence in PHP
我正在嘗試從dbConnect.php文件中的PHP創建過程,該文件可用於提供對數據庫的訪問。 該文件包含在每個需要數據庫訪問的文件中。 不幸的是,這意味着已經創建的存儲過程導致代碼拋出錯誤(因為它試圖創建已經存在的存儲過程)。
我曾嘗試在這里尋求有關存儲過程的幫助,以及在互聯網上尋找有助於創建存儲過程的任何方法,但是我能找到的例子是刪除存儲過程(如果已創建)的示例。 這似乎是一種巨大的浪費,因為每次需要數據庫訪問時都會調用一些潛在的昂貴方法。
我正在嘗試,而不是拖放並重新創建,而是檢查是否存在,如果不存在,則創建它。 換句話說,我想執行以下操作:
$storedProcedureExists = $connection->query(/* some query that checks for the existence of that stored procedure */);
if (!$storedProcedureExists)
{
// create the stored procedure here
}
您可以使用以下查詢來確定過程是否存在:
SELECT COUNT(*) AS found
FROM information_schema.routines
WHERE routine_schema = 'yourDBname'
AND routine_name = 'yourProcedureName'
如果$row['found']
為1
則該過程已存在;如果為0
,則該過程不存在。
可在INFORMATION_SCHEMA數據庫的ROUTINES表中查詢存儲的過程。
您可以使用此查詢在數據庫中查找存儲過程的名稱,假設您的數據庫名稱為dbname
而過程名稱為procname
:
SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE="PROCEDURE"
AND ROUTINE_SCHEMA="dbname"
AND ROUTINE_NAME="procname"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.