database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 7945 게시물 읽기
No. 7945
게시판 번호를 max+1 할때...
작성자
안녕하세요`
작성일
2009-06-15 21:33
조회수
6,937


게시판을 INSERT 하는 쿼리 입니다.

아래처럼 게시판번호(BOARD_SEQ)를 MAX+1을 사용을 하고 있는데...

T_BOARD_SEQ 테이블에 최초로 테이터를 넣을때 저렇게 MAX를 구하니 NULL 값이 나오더라구요...


이럴때 NULL일경우 1로 값을 지정할 수 있는 방법을 알려주세요 ^^;;

 

INSERT INTO T_BOARD(BOARD_SEQ, BOARD_NAME, BOARD_TYPE, CMNT_GB, FILE_GB, USE_GB, DISP_ORD)

VALUES ((select max(BOARD_SEQ)+1 from T_BOARD), #boardName#, #boardType#, #cmntGb#, #fileGb#, #useGb#, #dispOrd#)

이 글에 대한 댓글이 총 4건 있습니다.

쿼리로 가능할지는 제가 아직 pg쿼리쪽을 잘 몰라서 거긴 힘들지만

트리거로 하면 가능합니다


insert before로 걸어주시고 insert 되었을때 max 구해서 값을 1 올려주시면 됩니다.


그럼

김병석(byung82)님이 2009-06-15 21:35에 작성한 댓글입니다.

coalesce 함수를 사용하세요.


그런데, 가만히 보니, 윗 쿼리가 아주 위험한 쿼리네요.


게시물이 많아지만 비용이 많이 드는 쿼리입니다.


일반적으로 저런 경우는


(select max()....)서브쿼리 자리에,


nextval(시퀀스이름)을 사용합니다.

김상기(ioseph)님이 2009-06-16 09:33에 작성한 댓글입니다.
이 댓글은 2009-06-16 09:37에 마지막으로 수정되었습니다.

max+1은 비용도 많이 들지만 중복 키가 발생할 가능성도 높지요.

박성철(gyumee)님이 2009-06-16 13:08에 작성한 댓글입니다.
이런 경우에 쓰라고 만들어 놓은 SERIAL/BIGSERIAL 타잎으로 BOARD_SEQ를 정의해주시면 만사 해결입니다.
김재현(reddragon)님이 2009-06-29 16:22에 작성한 댓글입니다.
이 댓글은 2009-06-29 16:23에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
7948DB Table Backup 오류 [4]
궁굼이
2009-06-16
9183
7947like 로 검색 시 효율적인 방법은? [3]
김대청
2009-06-16
6951
7946디비 필드수가 검색기능에 어느정도 영향을 끼치는지 궁금합니다 [2]
초보
2009-06-16
6095
7945게시판 번호를 max+1 할때... [4]
안녕하세요`
2009-06-15
6937
7942Trigger 비슷한 기능을 구현하는데요... [1]
아즈샤라
2009-06-15
6123
7919PostgreSQL 서버가 자꾸 다운됩니다. [3]
김용남
2009-06-11
6535
7905psql 에서 if then else 문을 사용하는 법을 알고 싶습니다. [2]
박춘삼
2009-06-05
7744
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다