我试图在用户表格中插入用户,但前提是他们的电子邮件不存在。仅当记录不存在时插入表格
CREATE TABLE `users` (
`ID` INT(8) NOT NULL AUTO_INCREMENT ,
`FIRSTNAME` VARCHAR(150) NOT NULL ,
`LASTNAME` VARCHAR(150) NOT NULL ,
`EMAIL` VARCHAR(150) NOT NULL ,
`PASSWORD` VARCHAR(150) NOT NULL ,
PRIMARY KEY (`ID`(8)),
UNIQUE (`EMAIL`)
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_bin;
,我运行此查询:
SET @P1 = 'john';
SET @P2 = 'smith';
SET @P3 = '[email protected]';
SET @P4 = 'password';
我有USERS_INSERT_NEW是一个存储过程是根本插入到users
表
SELECT IF (NOT EXISTS (SELECT `ID` FROM `users` WHERE `EMAIL` = '[email protected]'), CALL USERS_INSERT_NEW (@P1, @P2, @P3, @P4) , NULL) INSERTED
IF语句是这样工作的: IF(表达式,有效,无效)为什么我不能使用我的存储过程,如果它验证?
来自doc:*如果expr2或expr3中只有一个显式为NULL,则IF()函数的结果类型为非NULL表达式的类型* –
不要打扰'先检查'。只需执行你的插入。 – Strawberry