db

게시판 write시 자동증가 컬럼의 비효율성 극복

C/H 2006. 10. 20. 01:03
sql="insert into table(ref,name, email, title, content)"
sql=sql & " (select IsNull(MAX(ref), 0) + 1, 'name', 'email', 'title', 'content' from table)"
db.execute(sql)

이렇게 하는게 더 짧네요 ^^;


> 김정호 님이 쓰신 글
> ----------------------------------------------------------
> 쿼리문이 틀린거 같아 수정합니다.
>
> sql="insert into table(ref,name, email, title, content)"
> sql=sql & " (select case when max(ref) is null then 1 else max(ref)+1
> end, 'name', 'email', 'title', 'content' from table)" <== 요 부분입니다.
> db.execute(sql)
>
>
> > 손님 님이 쓰신 글
> > ----------------------------------------------------------
> > 흔히 게시판등의 글을 쓸때
> > max(ref) 의 값을 select 후 max(ref)+1 값을 구해서 게시판 테이블에 insert 를 합니다.
> >
> > sql="select max(ref) from table"
> > set rs=db.execute(sql)
> >
> > if rs.eof then
> > maxref=1
> > else
> > maxref=rs(0)+1
> > endif
> >
> > sql="insert into table (ref, name, email. title, content) values
> > (maxref, 'name', 'email','title','content') "
> >
> > => 이것을 아래처럼 하나의 sql로 처리할수 있습니다.
> >
> > sql="insert into table(ref,name, email, title, content)"
> > sql=sql & " (select case when max(ref) is null then 1 else max(ref)+1
> > end, 'name', 'email', 'title', 'content')"
> > db.execute(sql)

출처 : http://blog.naver.com/duraboys
반응형

'db' 카테고리의 다른 글

마이그레이션 이런된장  (0) 2010.10.28
DBMS에 따른 날짜포맷 변환  (0) 2008.11.10
DBMS의 SQL 비교  (0) 2006.10.19
Subquery특징  (0) 2006.09.22
limit, rownum, top  (0) 2006.09.22