在重复键更新时插入混淆

时间:2009-06-12 04:05:06

标签: mysql

我正在尝试实施一个3表项目标记系统

表:项目
列:ItemID(主要,auto_increment),标题,内容

表:标签
列:TagID(primary,auto_increment),Title,TagCount

表:ItemTag
列:ItemID,TagID

标签的每个标题都是唯一的 我想实现一种有效的插入Tag表的方法:
1.检查标题是否存在 2.如果存在,请更新TagCount + 1
3.否则,如果不存在,请插入

我查看了INSERT ON DUPLICATE KEY UPDATE,但我很困惑,因为我的密钥是TagID而不是Title。

2 个答案:

答案 0 :(得分:3)

我假设您正在尝试插入表格“Tag”。

您需要修改表并在标题字段上添加唯一索引:

alter table tag add unique index title(title);

然后,您可以执行以下操作

insert into tag (Title, TagCount) values ('blah',1)
on duplicate key update TagCount = TagCount + 1;

希望这对您有所帮助。

答案 1 :(得分:0)

您可能想要做的是在Tag Unique中创建“标题”字段。

如果你这样做,那么你可以这样做:

INSERT INTO Tag (Title, TagCount) VALUES ('<value>', 1)

ON DUPLICATE KEY UPDATE TagCount = TagCount + 1;