T_T 님이 쓰신 글 :
: generator대신 사정이 생겨서
: 어느 테이블에서 제네레이터 역할을 하는 값들을 관리해야합니다.
: 그러니까 그 테이블의 구조는
:
: Name | Value
: 1. A 1
: 2. B 11
: 3. C 3
:
: 뭐 이런식이겠죠.
: 그래서 필요할때는 select쿼리를 던져서 그값을 가져나와서 1을 더한후에
: 그 값을 사용하고 그 1이 더해진값을 다시 update를 하고..
: 뭐 그런식으로 쓰고 있습니다... ^^;;
:
: 근데 문제는.. 이것을 여러 유저가 사용하는 빈도가 아주 높다는 것입니다.
: 이게 primary key로 사용되는거라서
: 절대로 같은 값이 발생되어서는 안되는데... 되고 있는것이죠 *풀썩*
:
: 아마도 select쿼리 한번 날리고. update쿼리 날리고.. 해야하니까
: 이 사이에 텀이 길다보니 발생하는 문제인것 같은데...
: 어떻게 해결해야할지요?
:
: 어떤방법이든 좋습니다(앗. generator는 절대 사용못하구요-_- 현재 이 테이블에서
: 값을 가지고 나와야합니다. 이게 전제조건이라서 어쩔수가 없습니다 ㅠ.ㅠ)
: 조언좀 부탁드립니다.
:
안녕하세요..
고유 번호 발번 과정임꺄?
일자별또는 코드별루욤 ?
그럼
CREATE TRIGGER TGG3 FOR T1 BEFORE INSERT POSITION 0 AS
Declare VARIable ck integer;
BEGIN
select max(f2) from t1 where f1 = new.f1
into :ck ;
if (:ck is null) then
new.f2 =1;
else
new.f2 = :ck + 1;
END
트리거를 사용하세요.. 입력하기전에. 처리 하믄될꼼다.
|