オブジェクトがデータベースに存在するかどうかをチェックする関数を作成します-そのIDを返すか、そうでない場合-オブジェクトを作成してそのIDを返します。
だから私はこのコードを作成します:
drop function if exists getAuthorId;
DELIMITER //
CREATE FUNCTION getAuthorId(anonym varchar(255) CHARACTER SET utf8, ispublic tinyint(1)) RETURNS INT
BEGIN
DECLARE y INT;
IF (SELECT id INTO y FROM library_author where library_author.slug = getSlug(anonym) limit 1) THEN
**# Here is need to make second select, cause if I just return y - it will be empty
Why ??**
SELECT id INTO y FROM library_author where library_author.slug = getSlug(anonym) limit 1;
RETURN y;
ELSE
INSERT INTO author set author.anonym = anonym, author.slug = getSlug(anonym), author.is_public = ispublic, author.date_created = CURDATE();
RETURN last_insert_id();
END IF;
END //
DELIMITER ;
選択リクエストを1つだけ使用する方法はありますか?