웹마스터 팁

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를 직접 건드리지 않는 것이 좋습니다. 잘못하면 데이터 다 날아갑니다.

 

제목 글쓴이 날짜
나만의 미니홈 만들기 ㅡ메뉴에 게시판 연결 [5] file 예뜨락 2004.12.17
인스타그램 해시태그 회원가입 없이 끌어오기 외인 2017.02.08
XE 1.8 대응 apache 2.2 / php 5.5 / MariaDB 10 설치 [11] 간장게장같은남자 2015.04.19
DB에서 직접 시퀀스 생성하기 [3] 기진곰 2015.07.18
구글 API 활용(뉴스가져오기) pixfine 2014.09.24
이거 어디다 올려야 될 지 몰라 여기다 올립니다. 프로그래머님들 읽어보세요. [2] 유샤인 2014.06.10
짧은 주소를 가능 하게 하는 서버(아파치, httpd) 설정 [3] 꿈섬 2014.07.27
해외 아이피 차단 방법입니다. [3] Flolida 2014.03.01
Windows IIS 에서 F5 연타 방지하기 (mod_evasive , limit_req) [3] file StyleRoot 2014.04.08
페이지로딩시 메모리 부족이란 오류메시지가 뜰때... 똑디 2013.11.07
rewrite mod 가 안 돼서 고생한 경험담입니다. [2] obok 2013.06.29
-추가- 당신의 XE 기반 홈페이지를 훅가게 하는 방법 4가지 [26] 老姜君 2009.10.08
메인화면에 설문조사 위젯(?) 만들기 [3] file 3D매니아 2010.12.14
'신고 수' 노출 함수 및 신고시 게시글 이동팁 [11] 인터니즈™ 2012.07.03
IIS 7.5 + XE 업로드 용량 개선 방법 [1] file 류군 2012.07.16
첨부파일 100% 에서 사라지는 문제 저도 해결 [2] 안나오네 2010.06.09
큰 파일의 썸네일이 안생길때 해결방법-추가 [7] HIKARU 2008.03.18
간단한 시간제한 자료실 만들기 [2] 옥수수밭 2010.03.17
이유는 모르겠는데 뷰테이블을 쓰면 XE의 속도가 크게 떨어지는 것 같습니다. [2] 철갑 2011.04.25
레이아웃에 소스추가해서 트래픽보기! [2] file 막시민 2011.03.07