User Tools

Site Tools


kurs:row_trigger

create table

CREATE TABLE kreis
    (id                             NUMBER,
    radius                         NUMBER,
    flaeche                        NUMBER)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
/

fill id

CREATE OR REPLACE TRIGGER trg_next_id
 BEFORE
  INSERT
 ON kreis
REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW
begin
  select hr_seq.NEXTVAL into :new.id from dual;
end;
/

calc radius oder flaeche

CREATE OR REPLACE TRIGGER trg_calc_flaeche
 BEFORE
  INSERT OR UPDATE
 ON kreis
REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW
begin
  if :new.flaeche is null then
    :new.flaeche := :new.radius**2 * 3.141;
  elsif :new.radius is null then
    :new.radius := (:new.flaeche / 3.141) ** (1/2);
  end if;
  dbms_output.put_line('Flaeche ' || :new.flaeche);
  dbms_output.put_line('Radius  ' || :new.radius);
end;
/
kurs/row_trigger.txt · Last modified: 2014/09/10 21:22 (external edit)