電子メールが存在しない場合にのみユーザーをユーザーテーブルに挿入しようとしています。レコードが存在しない場合にのみテーブルに挿入する
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(expression、valid、invalid)なぜ検証したらストアドプロシージャを使用できないのですか?
から* expr2またはexpr3の1つのみが明示的にNULLの場合、IF()関数の結果の型はNULL以外の式の型です* –
'最初にチェックしてください'。挿入だけを実行してください。 – Strawberry