向表中添加多个标签

时间:2013-04-24 09:26:38

标签: mysql sql database stored-functions

我在数据库中有一个表tags,我希望创建一个基于添加值的查询(如果不存在name标记,下一个选择的ID,如果名称存在,则选择标记ID

我创建了一个简单的代码:

DELIMITER $$
USE `cc`$$
DROP FUNCTION IF EXISTS getTagId$$
CREATE FUNCTION getTagId (tag CHAR(20)) RETURNS  INT CHARSET utf-8
    BEGIN
       DECLARE id INT
       set @id = (select id from tags where name = @tag)
           if (@id is null) then
            insert into tags(name) values(@tag)
            set @id = (select last_insert_id())
           end if
        SELECT @id
    END
delimiter;

但是这段代码不起作用(这是我在MySQL中的第一个函数)。

我想在单个查询中添加数据库更多标签然后10,您对如何优化有任何想法吗?

2 个答案:

答案 0 :(得分:0)

您应该在最后一行之前添加$$

而且,你忘记了很多;

返回一个数字并指定charset是荒谬的,可能是语法错误。

删除@id的所有行,只需添加RETURN last_insert_id();

IF NOT EXISTS((从name = tag的标签中选择id))那么

(还要注意我从标签中删除了@)

可能有更多的错误,但有这些错误:)

答案 1 :(得分:0)

但可能我的旧答案毫无用处。真正的问题是:这个存储功能真的需要吗?我想你试图这样做只是为了避免重复。

达到同一目标:

  • 向tags.name
  • 添加UNIQUE索引
  • 使用INSERT IGNORE(如果该标记已存在则无错误)