2009-06-12 5 views
0

내가 3 테이블 항목 태그 시스템중복 키 업데이트에 대한 삽입 혼동

표 구현하기 위해 노력하고있어 : 항목
열 : 항목 ID (차, AUTO_INCREMENT), 제목, 내용

테이블 : 태그
열 : TagID (차, AUTO_INCREMENT), 제목, TagCount

표 : 항목 ID, TagID

,691 :
열 ItemTag

태그의 각 제목은 고유합니다.
1. 그것은, 업데이트 TagCount +가 존재하지 않는 경우, 그 밖에 1
3. 존재하는 경우 제목
2 존재하는 경우, 삽입 :
나는 태그 테이블에 삽입하는 효율적인 방법을 구현하고 싶습니다

INSERT ON DUPLICATE KEY UPDATE를 보았습니다. 내 키가 TitleID가 아니고 Title이 아니기 때문에 적용 할 수 있다면 혼란 스럽습니다.

+0

질문 1 : Item.Title과 Tag.Title은 다른 값을 보유합니까? 질문 2 : TagCount가 기본 키 (ItemID, TagID)가 설정된 ItemTag 테이블에 있어야합니까? – gahooa

+0

Q1 : 다른 값 Q2 : TagCount는 해당 태그에 대한 ItemTags의 수입니다. 효율성을 위해 보관하고 싶습니다. – Glitz

답변

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; 

희망을 할 수 있습니다.

0

'제목'필드를 '태그 고유'로 지정하면됩니다. 당신이 할 경우

, 당신은 할 수 :

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

을 = TagCount + 1 DUPLICATE KEY UPDATE TagCount ON;