0

オブジェクトがデータベースに存在するかどうかをチェックする関数を作成します-その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つだけ使用する方法はありますか?

4

1 に答える 1

0

これを試して:

DECLARE y INT;  
SELECT id INTO y FROM library_author where library_author.slug = getSlug(anonym) limit 1;  
IF( !ISNULL( Y )) then return Y;
   else return 0;  
end if;
于 2012-12-10T13:35:23.133 に答える