私は奇妙な問題に直面しています。私はmysqli extension
phpから使用しており、テーブルにいくつかの値を挿入するmysqlのストアド関数を呼び出しています.user_idフィールドは自動インクリメントされるため空のままにしますが、挿入クエリは失敗し、デフォルト値がありませんすでに自動インクリメントフィールドである user_id の場合..ストアドファンクションを投稿しています。
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE FUNCTION `ideaforum`.`login_handler` (
login ENUM('facebook','twitter','google','local'),
firstname VARCHAR(40),
middlename VARCHAR(40),
lastname VARCHAR(40),
gender ENUM('male','female'),
emailid VARCHAR(50),
remoteid VARCHAR(70)
)
RETURNS INT
BEGIN
DECLARE user_exists INT DEFAULT NULL;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
SET user_exists = FALSE;
SELECT user_id FROM user WHERE email=emailid
INTO user_exists;
IF user_exists = FALSE THEN
INSERT INTO user
(login_type,first_name,middle_name,last_name,gender,email,remote_id)
VALUES
(login,firstname,middlename,lastname,gender,emailid,remoteid);
INSERT INTO contact
(contact_type,contact_details)
VALUES("email",emailid);
SELECT user_id FROM user WHERE email = emailid INTO user_exists;
RETURN(user_exists);
ELSE
RETURN(user_exists);
END IF;
END