2012-12-19 7 views
1

TBL_CAS라는 테이블이 있습니다. FLD_ID는 자동 증분 열이고 다른 열은 FLD_CAS_CODE입니다. 이제 CAS-을 FLD_ID에 접두사로 추가하고 FLD_CAS_CODE에 삽입해야합니다. 나는 방아쇠를 당길 필요가있어. 나는 아래의 코드로 시도했지만 삽입하지 않은 데이터는 무엇인가? "CAS -"내 말은트리거에서 열과 문자열을 연결합니다.

CREATE OR REPLACE TRIGGER TBL_CAS_TRG 
BEFORE INSERT ON TBL_CAS 
FOR EACH ROW 
BEGIN 
:NEW.FLD_CAS_CODE := TO_CHAR ('CAS')||'-'||:NEW.FLD_ID; 
END; 

`정확히

답변

0

어떤 부분을 + "fld_id"= "CAS-fld_id을" '작동하지 않는 이유는 무엇입니까? 당신의 방아쇠가 잘 작동하는 것처럼 보입니다.

SQL> create table TBL_CAS(FLD_ID number, FLD_CAS_CODE varchar2(20)); 

Table created. 

SQL> CREATE OR REPLACE TRIGGER TBL_CAS_TRG 
    2 BEFORE INSERT ON TBL_CAS 
    3 FOR EACH ROW 
    4 BEGIN 
    5 :NEW.FLD_CAS_CODE := TO_CHAR ('CAS')||'-'||:NEW.FLD_ID; 
    6 END; 
    7/

Trigger created. 

SQL> insert into TBL_CAS (fld_id) values (1001); 

1 row created. 

SQL> select * From TBL_CAS; 

    FLD_ID FLD_CAS_CODE 
---------- -------------------- 
     1001 CAS-1001 

SQL> 
1

이미 charcater 데이터 유형 인 것들에 TO_CHAR()을 넣을 필요는 없습니다. 하지만 당신은 (오히려 암시 적 변환에 의존하지 않고) 숫자 ID를 캐스팅해야합니다

:NEW.FLD_CAS_CODE := 'CAS-'||TRIM(TO_CHAR (:NEW.FLD_ID)); 
0

이것은 또한 잘 작동합니다 :

CREATE OR REPLACE TRIGGER TBL_AREA_CODES_TRG 
BEFORE INSERT ON TBL_AREA_CODES 
FOR EACH ROW 
BEGIN 
    :NEW.OBRM_AREA_CODE := :NEW.STATE_CODE ||'-'||:NEW.DIST_CODE ||'-'||:NEW.CITY_CODE ||'-'||:NEW.AREA_CODE ; 
END;