2009-06-12 2 views
0

Я пытаюсь выполнить пункт 3 таблицы мечения системысмущены вставки на дубликат ключа обновления

Таблица: Пункт
Столбцы: Itemid (первичный, auto_increment), заголовок, содержание

Таблица: Tag
Колонны: TagID (первичный, auto_increment), Название, TagCount

Таблица: ItemTag
Колонки: ItemId, TagID

Каждое название тега уникально.
Я хотел бы реализовать эффективный способ вставки в теге таблицы:
1. Проверьте, существует Название
2. Если он существует, обновление TagCount + 1
3. Иначе, если он не существует, вставка

Я изучил INSERT ON DUPLICATE KEY UPDATE, но я смущен, если его можно применить, потому что мой ключ является TagID, а не Title.

+0

Вопрос1: имеет ли Item.Title и Tag.Title различные значения? Question2: Не должен ли TagCount находиться в таблице ItemTag с первичным ключом (ItemID, TagID)? – gahooa

+0

Q1: разные значения Q2: TagCount - это количество ItemTags для данного тега. Я хочу сохранить его только для эффективности. – Glitz

ответ

3

Я предполагаю, что вы пытаетесь сделать вставку в таблицу «Тег».

Вы должны изменить таблицу и добавить уникальный индекс на поле заголовка:

alter table tag add unique index title(title); 

Затем, вы можете сделать следующее

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

Хотелось бы надеяться, что делает трюк для вас.

0

Возможно, вы захотите сделать поле «Название» в теге Unique.

Если вы сделаете это, то вы можете сделать:

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

дублированием KEY UPDATE TagCount = TagCount + 1;

Смежные вопросы