0
我試圖運行MySQL查詢瀏覽器這個程序(v5.0.6):爲什麼mySQL DROP TABLE不起作用?
DELIMITER $$
DROP PROCEDURE IF EXISTS `M_ORIGRES`.`RemoveDups` $$
CREATE PROCEDURE `M_ORIGRES`.`RemoveDups`()
BEGIN
drop table if exists M_ORIGRES.RSLFix;
#copy the xID of duplicated records into a temp table
CREATE TABLE IF NOT EXISTS M_ORIGRES.RSLFix
SELECT n1.xID AS TempxID FROM M_ORIGRES.`Results Signed List` AS n1, M_ORIGRES.`Results Signed List` AS n2
WHERE n1.xID > n2.xID
AND n1.`Import Accession Number` = n2.`Import Accession Number`
AND n1.`Import Date` = n2.`Import Date`
AND n1.`Reviewed By` = n2.`Reviewed By`
AND n1.xID <> n2.xID
LIMIT 20;
#remove the temp table data
#DELETE FROM M_ORIGRES.RSLFix;
END $$
DELIMITER ;
它工作正常第一次,但在創建表RSLFix後,我得到的錯誤「表rslfix已經存在」 。 DROP TABLE不起作用。爲什麼不?我只是用CREATE TABLE命令創建它。
附加說明:如果我單獨執行DROP命令,則DROP命令有效。它只在程序中調用時失敗。
這是不尋常的;爲什麼你使用查詢瀏覽器而不是工作臺或其他方法? – Uueerdo
這是在多個連接上運行嗎?由於它不是臨時表,所以有可能在並行執行中一個或多個可能會在另一個之後觸發它們的CREATE。 – Uueerdo
你可以使用'create temporary table'來代替。當控制連接關閉時,這些會自動刪除,臨時表也不會在連接之間共享。 –