1

我有一个名为 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"'

4

3 回答 3

1

您不需要将 TO_CHAR() 放在已经是字符数据类型的东西周围。但是您应该转换数字标识符(而不是依赖隐式转换):

:NEW.FLD_CAS_CODE := 'CAS-'||TRIM(TO_CHAR (:NEW.FLD_ID));
于 2012-12-19T14:36:17.047 回答
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>
于 2012-12-19T14:34:31.260 回答
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;
于 2016-01-05T13:56:40.437 回答