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
운영게시판
최근게시물
Tibero Q&A 574 게시물 읽기
No. 574
티베로 트랜잭션 처리
작성자
해소수
작성일
2010-02-09 16:37
조회수
14,186

티베로 db에 채번을 insert 할때 채번tb에 100번까지 번호가 있다고 가정할때

번호 날짜 아이디
100 2010-02-09 AAA

A라는 사람이 입력을 할때 101번을 따면서 아직 commit을 안한상태인데

B라는 사람이 동시에 입력을 할때 같은 101번을 따버리네요.

A라는 사람이 처리가 끝날때까지 B를 대기시키고 싶은데

혹시 티베로 자체의 테이블에 트랜잭션을 설정하는 옵션이 있는지 궁금합니다.

 

 

 

 

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

안녕하세요 티베로 담당자입니다.

말씀하신 내용으로 유추해보면

채번할때  "번호" 컬럼의 MAX 값을 SELECT해서 +1하는 형태로 사용하시는것 같은데요

이럴경우에는 말씀하신것처럼 유일한 채번값을 보장하지 않습니다.

 

이것은 티베로에서만 발생하는 현상은 아니며

대부분의 DBMS에서는 효율적인 LOCK 관리를 위해서는 SELECT할때 LOCK을 잡지 않습니다.

 

원하는 처리방식이 중복되지 않는 채번값을 얻어오는 것이라면 SEQUENCE 객체를 사용하시면 됩니다.

사용방법은 다른 DBMS의 SEQUENCE 객체나 자동증가 필드와 유사하고

SEQUENCE에 대한 자세한 설명은 티베로 Admin메뉴얼과 SQL 레퍼런스 메뉴얼을 참고하시기 바랍니다.

 

예제) 

### 테이블 생성 ###
CREATE TABLE 테이블 (번호 NUMBER(3), 날짜 DATE, 아이디 VARCHAR(10));
INSERT INTO 테이블 (번호, 날짜, 아이디) VALUES (100, SYSDATE, 'AAA');

### 시퀀스 생성 ###
CREATE SEQUENCE test_seq
INCREMENT BY 1
START WITH 101
MINVALUE 1
MAXVALUE 100000
NOCYCLE;

 

### SEQUENCE 객체를 이용한 INSERT ###
INSERT INTO 테이블 (번호, 날짜, 아이디) VALUES (TEST_SEQ.NEXTVAL, SYSDATE, 'AAA');

티맥스데이타(Tibero3)님이 2010-02-10 10:36에 작성한 댓글입니다.
이 댓글은 2010-02-10 10:37에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
588티베로 TJDBC-90400 에러에 관해서요 [1]
박제범
2010-09-03
13438
587Tibero + QueryService(Anyframe) 조합에서 결과값을 리턴하는 프로시져 호출 에러
선영석
2010-08-18
10184
584TAC 사용 시 system hang 현상 [1]
grrrr
2010-03-24
9916
574티베로 트랜잭션 처리 [1]
해소수
2010-02-09
14186
524티베로 + 스프링 사용중 에러.. ㅠㅠ [4]
쵸리
2009-11-17
37738
522DBCP에서 CLOB 사용이 안됩니다. [2]
이상호
2009-10-16
8950
521tibero3.0 설치했는데 접속이 안됩니다 [1]
강동현
2009-10-13
19558
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.046초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다