User Tools

Site Tools


kurs:row_trigger

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
kurs:row_trigger [2008/11/12 11:37]
mh
kurs:row_trigger [2014/09/10 21:22] (current)
Line 1: Line 1:
 +==== create table ====
  
 +<​code>​
 +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
 +/
 +</​code>​
 +
 +==== fill id ====
 + 
 +<​code>​
 +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;
 +/
 +</​code>​
 +
 +==== calc radius oder flaeche ====
 +
 +<​code>​
 +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;
 +/
 +</​code>​