2017-07-29 63 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(如果找到),我會警告用戶該電子郵件存在,否則我將記錄插入到數據庫中。

相關問題