我正在尝试编写一个存储过程,检查是否存在值,如果不存在,它将插入它。我所遇到的问题是它没有运转。此过程的模式是tag_id VARCHAR(24)主键和标签varchar(255)

创建程序

DELIMITER //

CREATE PROCEDURE `create_tag_not_exist` (IN tag_id VARCHAR(24), IN tag VARCHAR(255))
BEGIN
IF(SELECT COUNT(*) FROM tags WHERE tag_id = tag_id <= 0 ) THEN
INSERT INTO tags(tag_id, tag) VALUES (tag_id, tag);
END IF;
END //


将数据插入其中

call create_tag_not_exist('abc123', 'doeraeme');


桌子仍然是空的。难道我做错了什么?

最佳答案

尝试这个

  DELIMITER //

    CREATE PROCEDURE `create_tag_not_exist` (IN tagID VARCHAR(24),
                                             IN tag VARCHAR(255))
    BEGIN
    IF( (SELECT COUNT(*) FROM tags WHERE tag_id = TagID)<1) THEN
    INSERT INTO tags(tagID, tag) VALUES (tag_id, tag);
    END IF;
    END //


我将参数名称从Tag_id更改为TagID,以防止字段名称和参数名称混淆。

关于mysql - MySQL存储过程不存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8458345/

10-15 19:49