This shows you the differences between two versions of the page.
| 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> | ||