Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Firebird i primjer korištenja trigera

[es] :: Firebird/Interbase :: Firebird i primjer korištenja trigera

[ Pregleda: 1826 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MarkoBalkan

Član broj: 141124
Poruke: 1624
178.160.57.*



+19 Profil

icon Firebird i primjer korištenja trigera08.10.2010. u 21:53 - pre 133 meseci
evo da pomognem početnicima.nadam se da je sve jasno, ako nešto nije, pitajte.

Code:

CREATE TABLE PROIZVODI (
  ID INTEGER,
  PROIZVOD VARCHAR(20) CHARACTER SET NONE COLLATE NONE,
  CIJENA DECIMAL(12, 2));


CREATE TABLE RACUN (
  ID INTEGER,
  PROIZVODI_ID INTEGER,
  KOLICINA DECIMAL(12, 2),
  UKUPNO DECIMAL(12, 2));

CREATE TABLE PORACUNU (
  ID INTEGER,
  UKUPNO DECIMAL(12, 2));

CREATE TABLE POPROIZVODU (
  ID INTEGER,
  KOLICINA DECIMAL(12, 2),
  UKUPNO DECIMAL(12, 2));


trigeri

Code:


CREATE TRIGGER ukupno FOR RACUN
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
NEW.UKUPNO=NEW.KOLICINA*(SELECT CIJENA FROM proizvodi where proizvodi.id=new.proizvodi_id);    
END;

CREATE TRIGGER ukupno_po_racunu FOR RACUN
ACTIVE AFTER INSERT
POSITION 0
AS
DECLARE VARIABLE I INTEGER;
BEGIN

            
               select count(*)  from racun where racun.ID=new.id into :i;
              if (i=1) then 
                BEGIN
                insert into poracunu(ID,Ukupno) values(NEW.ID,0);
                update poracunu set Ukupno=Ukupno+new.Ukupno where ID=NEW.ID;
                END
                 else
                begin
                update poracunu set Ukupno=Ukupno+new.Ukupno where ID=NEW.ID;
               end
               
               
               
END;



CREATE TRIGGER ukupno_po_proizvodu FOR RACUN
ACTIVE AFTER INSERT
POSITION 0
AS
DECLARE VARIABLE I INTEGER;
BEGIN
    select count(*) from racun where proizvodi_id=new.proizvodi_id into i;
            if (i=1) then 
                BEGIN
                insert into poproizvodu(ID,kolicina,ukupno) values(NEW.proizvodi_id,0,0);
                update POPROIZVODU set kolicina=kolicina+new.kolicina, ukupno=ukupno+new.ukupno  where ID=NEW.proizvodi_id;
                END
                 else
                begin
                update poproizvodu set kolicina=kolicina+new.kolicina,ukupno=ukupno+new.ukupno where ID=NEW.proizvodi_id;
               end
END;
 
Odgovor na temu

[es] :: Firebird/Interbase :: Firebird i primjer korištenja trigera

[ Pregleda: 1826 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.