웹마스터 팁

XE는 모듈, 문서, 댓글, 회원 등 모든 것에 고유번호(srl)를 부여합니다.

그런데 이게 테이블마다 별도로 auto_increment되는 것이 아니라 사이트 전체에서 유일한 번호이기 때문에

XE 내에서 작업하지 않고 DB에서 직접 작업해야 할 때는 상당히 귀찮습니다.

잘못 건드리면 시퀀스 값이 중복되어서 난리나고요 ㅠㅠ

 

MySQL 5.x에서는 아래와 같은 프로시저를 생성하여 시퀀스 작업을 단순화할 수 있습니다.

DELIMITER //
DROP FUNCTION IF EXISTS xe_next_sequence //

CREATE FUNCTION xe_next_sequence() RETURNS BIGINT
BEGIN
  DECLARE next_sequence BIGINT;
  INSERT INTO xe_sequence (seq) VALUES (0);
  SELECT LAST_INSERT_ID() INTO next_sequence;
  IF (next_sequence % 10000 = 0) THEN
    DELETE FROM xe_sequence WHERE seq < next_sequence;
  END IF;
  RETURN next_sequence;
END //
DELIMITER ;

이렇게 해두면 어디서든 시퀀스 값이 필요할 때

SELECT xe_next_sequence();

이렇게 간단한 쿼리 한 번으로 다음 시퀀스 값을 뽑아낼 수 있게 됩니다.

또한 다른 쿼리를 작성할 때도

INSERT INTO xe_table_name VALUES (xe_next_sequence(), 'foo', 'bar', ... );

이렇게 활용이 가능합니다.

 

※ 꼭 필요한 경우가 아니면 DB를 직접 건드리지 않는 것이 좋습니다. 잘못하면 데이터 다 날아갑니다.

 

제목 글쓴이 날짜
triggerAfterInsertDocument에서 첨부파일 불러지지 않는 문제 해결 방법 [1] 단희아빠 2015.09.04
XE 서버 이전할 때 통채로 압축해서 옮기는 완벽한 방법-로그인, 첨부파일문제 해결 [5] 웰빙샵 지영 2009.09.15
손님이 비밀글 작성한 직후에도 글 보려면 반드시 비밀번호 넣게 하는 방법 [1] sejin7940 2014.06.18
php로 간단하게 신규쪽지(읽지않은쪽지) 표시해주기 [2] 졸라맨 2014.07.23
XE 1.8 대응 apache 2.2 / php 5.5 / MariaDB 10 설치 [11] 간장게장같은남자 2015.04.19
php 5.6 이상에서 사이트 메뉴 편집 등 오류 발생시 YJSoft 2015.08.12
위젯수정시 _getContent method is not exists 에러 뜨는 문제 [2] 황비 2014.11.14
[XE수정] 관리자페이지 회원리스트를 내맘대로 브레인630 2015.08.11
[XE수정] '새버전을 업데이트...'이 부분이 눈에 거슬리면... [1] 브레인630 2015.08.11
CSS 및 JAVASCRIPT 소스 효과적으로 숨기기. [9] LaughLikeCrazy 2007.06.16
태그 (Tag) 관련글 보여줄 때 상단에 선택된 태그 보여주는 방법 [1] calko 2015.08.08
DB에서 직접 시퀀스 생성하기 [3] 기진곰 2015.07.18
FTP로 폴더가 삭제가 안될때~! [6] file 웹엔진 2012.01.30
사이트접속시 제로보드XE폴더로 이동되게 하는 쉬운방법 [8] 부찬™ 2007.08.17
member 모듈 메일인증을 사용할때 모바일 기본스킨에서 회원가입 후 이메일 발송 안내 띄우기 [2] file 후하니 2015.08.01
새로고침 없는 실시간 웹서비스를 위한 기술과 간략한 역사(?) [1] onTrust 2015.07.27
Startssl 설치과정!! [83] file 제이엔지 2012.08.13
홈페이지 제작 시 점검사항 15가지 [1] 유래유거 2015.06.29
[실험팁] XE 고용량/큰사진 썸네일 깨지는 것 해결 socialskyo 2015.07.20
레이아웃 메뉴에서 메뉴옆에 글수 표시하기 반걸 2015.07.20