MYSQL 存储过程未按预期运行

MYSQL Stored procedure not behaving as expected

我正在尝试创建一个将记录插入数据库的存储过程和 return 新创建的 ID。如果同名记录已经存在,它应该 return 该记录的 ID。 这是我目前所拥有的,它适用于新插入的记录,但是 return 如果记录已经存在则什么都没有。

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_tag`(IN `tag_name_in` VARCHAR(255), OUT `tag_id_out` INT) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER 
BEGIN 
    INSERT INTO tag (name) VALUES (tag_name_in); 
    IF ROW_COUNT() = 1 THEN 
        SET tag_id_out = LAST_INSERT_ID(); 
    ELSE 
        SELECT id INTO tag_id_out FROM tag WHERE name=tag_name_in; 
    END IF; 
END

我完全看不出使用 LAST_INSERT_ID() 的理由。

CREATE 
DEFINER=`root`@`localhost` 
PROCEDURE `insert_tag`(IN `tag_name_in` VARCHAR(255), OUT `tag_id_out` INT) 
NOT DETERMINISTIC 
NO SQL 
SQL SECURITY DEFINER 
BEGIN 
    INSERT IGNORE INTO tag (name) VALUES (tag_name_in); 
    SELECT id INTO tag_id_out FROM tag WHERE name=tag_name_in; 
END

由于问题文本 tag (name) 被定义为 UNIQUE(甚至可能是 PRIMARY KEY)。