Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 64bit
CUBRID Ver.
[9.3.9]
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------



오라클 에서 큐브리드로 전환 준비 중입니다. 트리거거 가 전환이 잘안되요 ㅠ 생성이 안됩니다.....

            

기존   ORACLE 트리거 (간략하게 변형했습니다.)                                                  

큐브리드로 전환... 중..
CRATE OR REPLACE TRIGGER tr_aaa

AFTER INSERT ON tb_aaa
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
 ddd number;                           -->  질문1. 큐브리드에서는 변수 지정 안되나요?
BEGIN
 IF :NEW. a2 = '0' THEN      --->  질문2. 큐브리드는 IF THEN 분기와 ELSEIF 가  안되나요?
 INSERT INTO tb_bbb (b1, b2, bcode) VALUES (b_seq.NEXTVAL, :NEW.a2, '사과코드');
  
   ELSIF :NEW.a2= '1' THEN
   SELECT c_seq.NEXTVAL INTO ddd FROM dual;     ----> 변수 지정에서 활용 하려면??
   INSERT INTO tb_ccc (c1, c2) VALUES (ddd, :NEW.a2);
  
   INSERT INTO tb_bbb (b1, b2, bcode) VALUES (ddd, :NEW.a2, '딸기코드');
  
   END if;            
end;  

질문3. tb_aaa 인서트가 일어날시 tb_bbb와 tb_ccc에 인서트 하고 싶은데 하나의 트리거

안에서는한번만 EXECUTE 문을 사용 할수 바께 없나요? 만약 그렇다면 트리거를 2,3 개

만들어서  처리 해야 가능한가요?

별수 없이 잘안되서 트리거를 2개로 만들어서 쪼개서 하면 여기까진 됨...

CREATE  TRIGGER tr_aaa
AFTER INSERT ON tb_aaa

 IF a2 = '0'
 EXECUTE
 INSERT INTO tb_bbb (b1, b2, bcode) VALUES (b_seq.NEXTVAL, a2, '사과코드');


CREATE  TRIGGER tr_bbb
AFTER INSERT ON tb_aaa  
   IF a2= '1'
   EXECUTE 
   INSERT INTO tb_bbb (b1, b2, bcode) VALUES (b_seq.NEXTVAL, 'a2', '딸기코드');

----------------------------------------------------------------------------------------------------

<------최종적으 오라클에서 처럼 하나의 트리거 안에서

변수를 선언해여러 이벤트를 한번에 처리 하고 싶은데... 방법이 없을까요?
--------------------------------------------------------------------------------------------------- 

--->  질문4. 아래 NEW  구분에서 오류 나는데 INSERT시는 사용하는게 아닌가요?

CREATE  TRIGGER tr_aaa
AFTER INSERT ON tb_aaa

 IF new.a2 = '0'
 EXECUTE
 INSERT INTO tb_bbb (b1, b2, bcode) VALUES (b_seq.NEXTVAL, new.a2, '사과코드');


쓰다보니... 길어 지네요.... ㅜ

테스트 하기 위해 생성했던 큐브리드 테이블 ddl 입니다....


DROP TABLE tb_aaa;

CREATE TABLE [tb_aaa] (
 [a1] NUMERIC(10)  NOT NULL,
 [a2] CHARACTER VARYING (40)  ,
 CONSTRAINT [pk_a1] PRIMARY KEY([a1])
);

DROP TABLE tb_bbb;

CREATE TABLE [tb_bbb] (
 [b1] NUMERIC(10)  NOT NULL,
 [b2] CHARACTER VARYING (40)  ,
 [bcode]CHARACTER VARYING (40)  ,
 CONSTRAINT [pk_b1] PRIMARY KEY([b1])
);

DROP TABLE tb_ccc;

CREATE TABLE [tb_ccc] (
 [c1] NUMERIC(10)  NOT NULL,
 [c2] CHARACTER VARYING (40)  ,
 CONSTRAINT [pk_c1] PRIMARY KEY([c1])
);

create SERIAL b_seq
START WITH 1 INCREMENT BY 1 MINVALUE 0 NOMAXVALUE NOCYCLE NOCACHE


create SERIAL c_seq
START WITH 1 INCREMENT BY 1 MINVALUE 0 NOMAXVALUE NOCYCLE NOCACHE

  • ?
    성진 2017.10.24 09:45

    https://www.cubrid.org/manual/ko/9.3.0/sql/trigger.html#correlation-name

    트리거의 상관명 및 매뉴얼을 참조 하시기 바랍니다.


     BEFOREAFTER or DERERRED
    INSERTnewobj
    UPDATE

    obj

    new

    obj

    old (AFTER)

    DELETEobjN/A
    상관명대표 속성 값
    obj인스턴스의 현재 속성 값을 나타낸다. 인스턴스가 갱신되거나 삭제되기 전에 속성값에 접근하기 위해서 사용한다. 그리고 인스턴스가 갱신되거나 삽입된 후에 속성 값에 접근하기 위해 사용한다.
    new삽입이나 갱신 연산에 의해 제시되는 속성값을 나타낸다. 새로운 값은 인스턴스가 실제적으로 삽입되거나 갱신되기 전에만 접근할 수 있다.
    old갱신 연산의 완료 전에 존재하던 속성값을 나타낸다. 이 값은 트리거가 수행되는 동안만 유지된다. 트리거가 종료되면 old 값은 잃어버리게 된다.


  • ?
    성진 2017.10.24 10:00
    질문1. 변수는 기능은 있으나 트리거에서 사용할 수 없습니다.
    질문2. 분기가 없습니다. 비교함수를 응용하시면 가능 할 수도 있습니다.
    질문3. 추가 트리거로 구현해야 합니다.
    질문4. 트리거의 상관명을 참조하세요,.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 128
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
3883 쿼리 에러 1 secret 김수민 2014.11.27 11
3882 broker에 대한 질문입니다. 1 secret 푸르팅팅 2014.02.25 11
3881 접속이 많으면 브로커 에러가 납니다 ㅠㅠ... 1 secret 광황제 2013.11.04 11
3880 unloddb 실행 3 secret 초초초보 2017.02.22 11
3879 db.access와 관련된 문의 사항 6 secret 밈s 2016.10.10 11
3878 백업DB 정렬별 다른결과 출력. 1 secret 유산균- 2016.03.26 11
3877 안녕하세요? loaddb 간에 질의가 있습니다. 2 secret 서기97 2009.06.16 11
3876 제로보드 4 이용중인데 최신게시물 불러오기에서 힘드네요 1 secret 헬리 2009.06.03 11
3875 [심각] 데이터가 많이 누적된 경우, ERROR -670 가 무조건 발생 2 secret 차오이 2011.05.13 11
3874 큐브리드 데이터베이스에서 CPU 사용율이 높을 경우 어느 부분을 확인하면 될까요? 5 secret 노랑배 2010.09.01 11
3873 cubrid statdump 기술 문의드립니다. 5 secret 이건우 2024.02.19 11
3872 내보내기할 때 옵션을 줄 수 있는 방법 없나요?? 1 secret 어려운큐브 2012.05.30 12
3871 업그레이드 후 쿼리 수행시간이 길어졌습니다. 4 secret 노랑배 2011.12.22 12
3870 cubrid 성능비교 2 secret 깨진질그릇조각인형 2011.12.15 12
3869 [테이블의 하위 페치 중]만 계속 나오면서 DB의 테이블을 보여주지 않고 있습니다. 4 secret 어려운큐브 2011.10.11 12
3868 큐브리드 쿼리문 문의 드립니다. 2 secret 스마트 2011.01.01 12
3867 브로커에 대해 질문드립니다. 1 secret 노랑배 2010.10.04 12
3866 아래 문의에 이어 질문드립니다. 2 secret 헬리 2010.07.13 12
3865 큐브리더 관련 문의 드려요^^ 1 secret 김트리 2009.07.17 12
3864 문의 1 secret 조규 2015.05.21 12
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 201 Next
/ 201

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales