2017-07-29 38 views
0

我试图在用户表格中插入用户,但前提是他们的电子邮件不存在。仅当记录不存在时插入表格

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(表达式,有效,无效)为什么我不能使用我的存储过程,如果它验证?

+0

来自doc:*如果expr2或expr3中只有一个显式为NULL,则IF()函数的结果类型为非NULL表达式的类型* –

+0

不要打扰'先检查'。只需执行你的插入。 – Strawberry

回答

0

进一步阅读有关存储过程后,我发现,如果语句只能在MySQL的存储过程里面。我将会使用更容易使用的SQL背景。无论如何,我解决了这个问题,通过从用户表中选择与此电子邮件相关联的用户的ID(如果找到),我会警告用户该电子邮件存在,否则我将记录插入到数据库中。

相关问题