웹마스터 팁
DB에서 직접 시퀀스 생성하기
2015.07.18 22:35
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를 직접 건드리지 않는 것이 좋습니다. 잘못하면 데이터 다 날아갑니다.
댓글 3
-
썰레발리오
2015.07.22 01:30
-
뉴질맨
2015.08.07 05:56
직접 Table에 자료를 넣으려고 하다가 sequence 문제를 해결해지 못해 API로 Test하고 있습니다.
일반 게시판 자료(제목과 내용)는 잘 들어가는데
사용자정의 (document_extra_keys 와 _vars 컬럼) 때문에 고전 중입니다.
알려주신 팁은 저에게는 햇빛과 같습니다. 감사합니다.
문의사항은,,
위 프로시져를 DB에 한번 실행하면 되는 것인가요?
아니면 DB Open 때마다 실행해줘야 하는 것인지요.
감사합니다.
-
기진곰
2015.08.07 09:04
프로시저는 한 번만 생성해 주면 됩니다.
단, MySQL 5.0 이하 버전에서는 지원되지 않습니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
인스타그램 해시태그 회원가입 없이 끌어오기 | 외인 | 2017.02.08 |
DB에서 직접 시퀀스 생성하기 [3] | 기진곰 | 2015.07.18 |
XE 1.8 대응 apache 2.2 / php 5.5 / MariaDB 10 설치 [11] | 간장게장같은남자 | 2015.04.19 |
구글 API 활용(뉴스가져오기) | pixfine | 2014.09.24 |
짧은 주소를 가능 하게 하는 서버(아파치, httpd) 설정 [3] | 꿈섬 | 2014.07.27 |
이거 어디다 올려야 될 지 몰라 여기다 올립니다. 프로그래머님들 읽어보세요. [2] | 유샤인 | 2014.06.10 |
Windows IIS 에서 F5 연타 방지하기 (mod_evasive , limit_req) [3] | StyleRoot | 2014.04.08 |
해외 아이피 차단 방법입니다. [3] | Flolida | 2014.03.01 |
페이지로딩시 메모리 부족이란 오류메시지가 뜰때... | 똑디 | 2013.11.07 |
rewrite mod 가 안 돼서 고생한 경험담입니다. [2] | obok | 2013.06.29 |
IIS 7.5 + XE 업로드 용량 개선 방법 [1] | 류군 | 2012.07.16 |
'신고 수' 노출 함수 및 신고시 게시글 이동팁 [11] | 인터니즈™ | 2012.07.03 |
이유는 모르겠는데 뷰테이블을 쓰면 XE의 속도가 크게 떨어지는 것 같습니다. [2] | 철갑 | 2011.04.25 |
레이아웃에 소스추가해서 트래픽보기! [2] | 막시민 | 2011.03.07 |
nginx에서 대역폭 제한하기 | fsfsdas | 2011.02.20 |
php5 설정(최적화) | fsfsdas | 2011.02.20 |
아파치 웹 서버 설정 == httpd.conf [2] | 김병화999 | 2009.01.02 |
httpd.conf 의 환경설정파일 안의 내용 [2] | 김병화999 | 2009.01.02 |
아파치인증 c 드라이버에서 성공예 | 이성헌 | 2005.12.15 |
httpd.conf 3차 설정본 - Virtualhost | 이성헌 | 2005.12.15 |
이거 좋네요. 추천!