不确定为什么会返回无效的语法:
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddColor`(
IN hexvalue varchar(7),
IN notes varchar(50))
BEGIN
IF hexvalue REGEXP '^#[0-9A-F]{6}$' THEN
INSERT INTO data.colors(hexvalue,notes) VALUES (hexvalue,notes);
ELSE
SIGNAL SQLSTATE '400'
SET MESSAGE_TEXT = 'Invalid hex value specified';
END IF;
END
写入时似乎没有任何错误。
答案 0 :(得分:1)
SIGNAL语句中的condition_value指示要返回的错误值。它可以是SQLSTATE值(5个字符的字符串文字),或者是condition_name,它引用先前用DECLARE ... CONDITION定义的命名条件(请参见第13.6.7.1节“ DECLARE ...条件语法”)。
尝试以下语法,并将SIGNAL SQLSTATE值更改为04000
:
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddColor`(
IN hexvalue varchar(7),
IN notes varchar(50))
BEGIN
IF (hexvalue REGEXP '^#[0-9A-F]{6}$') THEN
INSERT INTO data.colors(`hexvalue`,`notes`) VALUES (hexvalue,notes);
ELSE
SIGNAL SQLSTATE '04000' SET MESSAGE_TEXT = 'Invalid hex value specified';
END IF;
END;