2017-04-12 93 views
0

我已经写了下面的存储过程来删除不同表中的用户。但不知何故,它不工作。如果我在它正在工作的过程中保留单独的查询,但是如果我添加了多个然后它不起作用。程序不起作用

DELIMITER $$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteUser`(IN `userid` INT) 
    NO SQL 
BEGIN 
DELETE FROM `Table1` WHERE id=userid; 
DELETE FROM `Table2` WHERE user_id=userid; 
DELETE FROM `Table3` WHERE userid=userid; 
END$$ 
DELIMITER ; 
+0

运行时出现任何错误? –

+0

当我运行它使用phpmyadmin它不显示任何错误? –

回答

0

我不能重现该问题:在Rextester

DROP PROCEDURE IF EXISTS `deleteUser`; 
DROP TABLE IF EXISTS `Table3`, `Table2`, `Table1`; 

CREATE TABLE IF NOT EXISTS `Table1` (
    `id` INT 
); 

CREATE TABLE IF NOT EXISTS `Table2` (
    `user_id` INT 
); 

CREATE TABLE IF NOT EXISTS `Table3` (
    `userid` INT 
); 

INSERT INTO `Table1` VALUES (100), (200), (300), (400); 
INSERT INTO `Table2` VALUES (100), (600), (700), (800); 
INSERT INTO `Table3` VALUES (100), (900), (1000), (1100); 

SELECT `id` FROM `Table1`; 
SELECT `user_id` FROM `Table2`; 
SELECT `userid` FROM `Table3`; 

DELIMITER \\ 

CREATE PROCEDURE `deleteUser`(IN `_userid` INT) 
BEGIN 
    DELETE FROM `Table1` WHERE `id` = `_userid`; 
    DELETE FROM `Table2` WHERE `user_id` = `_userid`; 
    DELETE FROM `Table3` WHERE `userid` = `_userid`; 
END\\ 

DELIMITER ; 

CALL `deleteUser`(100); 

SELECT `id` FROM `Table1`; 
SELECT `user_id` FROM `Table2`; 
SELECT `userid` FROM `Table3`; 

实施例。