2009-06-12 20 views
0

私は3テーブル項目タグ付けシステム重複するキー更新の挿入によって混乱

表を実装しようとしています。項目
列:アイテムID(プライマリ、AUTO_INCREMENT)、タイトル、コンテンツ

表:タグを
カラム:タグID(一次、AUTO_INCREMENT)、タイトル、TagCount

表:ItemTag
カラム:アイテムID、タグID

タグの各タイトルはユニークです。
私は、タグテーブルに挿入する効率的な方法を実装したいと思います:
1.それが存在する場合、タイトルは
2が存在するかどうかを確認、それが存在しない場合TagCount + 1エルス
3を更新、挿入

私はINSERT ON DUPLICATE KEY UPDATEを調べましたが、私のキーはタイトルではなくTagIDであるため、適用できるのか混乱しています。

+0

質問1:Item.TitleとTag.Titleは異なる値を保持していますか? 質問2:TagCountが(ItemID、TagID)の主キーを使用してItemTagテーブルに存在してはいけませんか? – 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

「タイトル」フィールドを「タグ一意」にすることをお勧めします。

あなたがそれを行う場合は、あなたができる:DUPLICATE KEY UPDATE TagCount = TagCount + 1 ON

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

を。

関連する問題