묻고답하기
(통합검색) 확장변수를 합쳐서 xe_tags 테이블에 자동저장
2015.07.07 15:38
통합검색(integration_search)에서 확장변수까지 검색하는 방법을 고민하다....
'태그'는 통합검색이 된다는 사실을 발견했습니다.
그렇다면 트리거로 확장변수를 몰아서 '태그'에 복사하면 어떨까.. 라는 생각을 해 보았습니다.
부족한 정도가 아니라. 아예 없는 실력으로
이틀 내내 트리거에 매달려 있는데요..
될 듯 말 듯 결국은 안됩니다... 고수님들의 조언을 구하고자 합니다...
도와주십시오 !!! ㅠ ㅠ
(xe_1.5 mysql 5.6.0-log)
create trigger test after insert on xe_documents
for each row
begin
declare x text
set x = (select group_concat(value separator '|') from xe_document_extra_vars where document_srl = NEW.document_srl)
insert into xe_tags set module_srl = NEW.module_srl, document_srl = NEW.document_srl, tag = x;
end;
# 1064 - You have an error in your SQL syntax : check the manual that ..... syntax to use near 'set x = (select content from xe_documents where document_srl=NEW.document_srl) ' at line 5
아래는 현재까지 탐구한 바입니다
1. tag 값은 xe_documents 와 xe_tag 두 개 테이블에 모두 존재함. 동시저장이 되는지 양쪽의 값이 같음.
2. 통합검색 모듈의 태그 검색은 xe_tag 테이블에서 tag 필드를 물고 옴
3. 확장변수는 xe_document_extra_var 테이블에 value라는 필드로 저장됨.
4. 확장변수 값이 10개라면, mysql의 트리거 기능은 모든 행에 적용(for each row)되므로 10개의 xe_tags를 만들어 낼 것임.
이유는. 표준 sql의 for each statement 기능이 지원되지 않기 때문.
5. 따라서. xe_document에 새 글이 등록되면 (1 row), xe_document_extra_vars에서 해당되는 확장변수(value) 10행을
select goup_concat 구문으로 한 줄에 때려넣어서 xe_tags에 복사.