仅当用户的电子邮件不存在时,我才尝试将用户插入到用户表中。
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(表达式,有效,无效)为什么我不能使用我的存储过程,如果它验证?
在进一步阅读有关存储过程的信息后,我发现 If 语句仅适用于 MySQL 中的存储过程。我有 SQL 背景,它更容易使用。无论如何,我通过从用户表中选择与此电子邮件关联的用户 ID 解决了这个问题,如果找到,我会警告用户电子邮件存在,否则我将记录插入到数据库中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句