我試圖在用戶表格中插入用戶,但前提是他們的電子郵件不存在。僅當記錄不存在時插入表格
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