我有一张名为TBL_CAS的表。其中,FLD_ID作为自动增量列,另一列称为FLD_CAS_CODE。现在我需要将CAS-
作为前缀添加到FLD_ID并插入到FLD_CAS_CODE中。我需要在触发器中执行此操作。我尝试使用下面的代码,但数据没有插入,有什么问题?
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;
我的意思是“cas - ”+“fld_id”=“cas-fld_id”'
答案 0 :(得分:1)
您不需要将TO_CHAR()放在已经是字符数据类型的东西周围。但是你应该转换数字标识符(而不是依赖于隐式转换):
:NEW.FLD_CAS_CODE := 'CAS-'||TRIM(TO_CHAR (:NEW.FLD_ID));
答案 1 :(得分:0)
哪部分不正常?因为你的触发似乎工作得很好。
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>
答案 2 :(得分: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;