2011-03-30 131 views
0

我有一个事件表,标签表(字段:TAG_ID,标签)和event_tag表(字段:事项标识,TAG_ID)。当一个人创建一个新事件时,他们可以添加通过INSERT IGNORE添加到标签表中的标签(以确保没有重复)。INSERT IGNORE多行;如何获得产生唯一的ID的

多个标签可以一次添加,然后我需要在event_tag表中创建相应的记录。

我需要的是帮助如何获得所产生的TAG_ID的在INSERT后,忽略的问题;有时候新的记录不会被添加,因为它们已经存在于标签数据库中,因此不会返回任何标识。

我应该执行INSERT忽略到标签数据库,然后执行SELECT得到相应的TAG_ID对它们添加了标记,然后执行另一个插入event_tag表?

谢谢!

回答

0
mysql_insert_id

检索由先前的查询(通常INSERT)AUTO_INCREMENT列生成的ID。将只输入一个(查询),所以如果你使用这种方法,你将不得不一次执行插入1值。对于多行,从插入查询中获取第一个生成的AUTO_INCREMENT字段。

- 编辑澄清,重读后可能有点令人困惑 -

+0

感谢您的评论。我意识到这一点,尽管它不幸没有帮助。我需要一种在INSERT IGNORE之后为每个标签查找'tag_id'的方法;如果标签已经在表格中,则不会返回标识。我还希望对所有标签使用一个INSERT IGNORE,而不是为每个标签分别使用INSERT IGNORE。 – 2011-03-30 19:16:57

+0

那么你可以遍历它们,或者唯一的选择我看到的是给'INSERT IGNORE'后,在相同的条件进行选择,看看他们被分配什么样的价值观。 – rayman86 2011-03-30 19:18:34

+0

我正在考虑做一个SELECT,但我不确定这是否被认为是“正确的方式”。我想我正在寻找关于这种方法的第二意见。感谢您的输入! – 2011-03-30 19:20:56