Auf Thema antworten

Hallo,


in einer Tabelle ist ein Datenfeld auf 40 Zeichen (VARCHAR2(40 BYTE)) begrenzt. Der String enthält Sonderzeichen und kann länger als 40 Zeichen sein. Damit der Insert erfolgt, muss der String abgeschnitten werden, egal wie lang der String ist. Bleibt ein Sonderzeichen am Ende stehen, kann der Datensatz aufgrund eines Fehlers nicht in die Tabelle eingefügt werden. In dem Beispiel bleibt zum Stringende ein ‚#‘ stehen. Diese Problem würde ich gerne mit einem Trigger lösen, der vor dem Insert den String auf 40 Zeichen kürzt und dann in das Feld schreibt.


String: BAP_DER_VS_0402_100n_+-10%_16V_123_''####''_457



create or replace

TRIGGER TTABLE.TR_TABLE_CUT_NAME

 BEFORE INSERT OR UPDATE

 ON TTABLE REFERENCING OLD AS OLD NEW AS NEW

  FOR EACH ROW

DECLARE


 

PT_NAME TTABLE.PT_NAME%type; 


 

BEGIN


 

  if

    inserting or updating

  then

    :new.PT_NAME := Substr(PT_NAME,1,40)';

  end if;


 

END TR_TABLE_CUT_PT_NAME;


Zurück
Oben