如果上一次选择成功,MySQL Raise错误不起作用
我试图生成一个测试,在给定表中特定的如果上一次选择成功,MySQL Raise错误不起作用,mysql,sql,stored-procedures,error-handling,Mysql,Sql,Stored Procedures,Error Handling,我试图生成一个测试,在给定表中特定的计数时引发错误。错误永远不会出现,这似乎是由于计数的选择造成的 以下MySQL语句成功失败(如果有意义的话): 但如果我添加一个简单的SELECT,它将永远不会失败(即使满足引发错误的条件): DROP程序(如果存在)测试; 分隔符// 创建过程测试() 开始 声明C INT; 选择1 因此,在研究了这一点之后,只有在SequelPro应用程序上尝试时才会发生这种情况 我直接在命令行和MySQLWorkbench上做了一些测试,两个测试都按预期进行(如果需要,
计数时引发错误。错误永远不会出现,这似乎是由于计数的选择造成的
以下MySQL
语句成功失败(如果有意义的话):
但如果我添加一个简单的SELECT
,它将永远不会失败(即使满足引发错误的条件):
DROP程序(如果存在)测试;
分隔符//
创建过程测试()
开始
声明C INT;
选择1 因此,在研究了这一点之后,只有在SequelPro
应用程序上尝试时才会发生这种情况
我直接在命令行和MySQLWorkbench
上做了一些测试,两个测试都按预期进行(如果需要,不管之前遇到成功的SELECT
s,都会引发错误)
现在结束这个问题。所以在研究了这个问题之后,只有在SequelPro
应用程序上尝试它时才会发生这种情况
我直接在命令行和MySQLWorkbench
上做了一些测试,两个测试都按预期进行(如果需要,不管之前遇到成功的SELECT
s,都会引发错误)
现在结束这个问题
DROP PROCEDURE IF EXISTS Test;
DELIMITER //
CREATE PROCEDURE Test()
BEGIN
DECLARE C INT;
SELECT 1 INTO C;
IF(C != 0) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error!';
END IF;
END; //
DELIMITER ;
CALL Test();
DROP PROCEDURE IF EXISTS Test;
DELIMITER //
CREATE PROCEDURE Test()
BEGIN
DECLARE C INT;
SELECT 1; <-- This is the added select.
SELECT 1 INTO C;
IF(C != 0) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error!';
END IF;
END; //
DELIMITER ;
CALL Test();