[ mladenvasic @ 10.07.2005. 09:48 ] @
Pozdrav svima ...
Moze li mi neko pomoci oko jednog problemcica.
Imam 2 tabele:
ARTIKLI i jedna od kolona je "STANJE"
STAVKE i jedna od kolona je "KOLICINA"

Treba mi trigger kada unesem neku kolicinu u tabelu STAVKE (kolona: KOLICINA) da mi se od stanja u tabeli ARTIKLI (kolona: STANJE) oduzme ta kolicina.

Izvinjavam se unaprijed ako je ovo pitanje vec prije postavljeno...
HVALA
[ Alter Ego @ 10.07.2005. 15:03 ] @
Prosto da prostije ne može biti. Ovo radi ono što želiš, kada se ubacuje nova stavka. Ne znam da li želiš da se stanje ažurira i kada se menja količina u postojećoj stavci?
[ mladenvasic @ 10.07.2005. 15:52 ] @
Nisam spomenuo da sam pocetnik sto se tice ovih stvari ...
Za azuriranje baze koristim EMS InterBase/Firebird Manager
Trebala bi mi malo preciznija pomoc npr. gdje da upisem neredbe:
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;

i poslije kreiranja triggere:

^
SET TERM ; ^

i za sta one sluze.

I naravno u tabeli ARTIKLI treba da se promjeni stanje samo onog artikla cija je sifra jednaka sifri artikla koji se unosi u tabelu STAVKE.

HVALA JOS JEDNOM ...

[ Alter Ego @ 10.07.2005. 16:36 ] @
Što odmah ne kažeš!? Sam triger počinje od naredbe CREATE TRIGGER pa do znaka ^. Naime, u ISQL i DSQL se početak i kraj trigera moraju posebno da označe, pošto se znak ; već koristi za kraj naredbe, odnosno iskaza. Sa SET TERM se određuje koji će se znak koristiti u tu svrhu. Naredba SET SQL DIALECT 3 određuje kao što ime kaže dijalekt SQL-a (odnosno odgovarajući SQL standard), moguće vrednosti su 2 i 3. O tome ne treba mnogo da brineš.
Većina alata (nemam iskustva sa tim koji ti koristiš) ima opciju automatskog kreiranja trigera – označiš par čekboksova da bi odredio da li se triger izvršava pre ili posle promene (BEFORE i AFTER, respektivno), da li je aktivan (ACTIVE), da li se izvršava pri ubacivanju, ažuriranju ili brisanju n-torki (INSERT, UPDATE i DELETE respektivno), zatim uneseš ime trigera i odrediš pripadajuću tabelu (u našem slučaju tabela STAVKE). Na osnovu ovoga alat automatski generiše triger, a tebi ostaje da implementiraš ono što ti treba (u našem slučaju upit između begin i end). Ja koristim uglavnom IBExpert.
Drugi način je da u editoru upita (svaki alat ga ima) direktno uneseš SQL kod tj. da prekopiraš ono što sam ti poslao i da zatim kompajliraš upit.

Citat:
I naravno u tabeli ARTIKLI treba da se promjeni stanje samo onog artikla cija je sifra jednaka sifri artikla koji se unosi u tabelu STAVKE.

Naravno :) To sam zaboravio. Dakle u upitu samo dodaj:
Code:
WHERE SARTIKLI = STAVKE.SARTIKLA


Evo ti u prilogu kompletan kod za obe tabele, ako te bune ovi moji nazivi.

Još nešto. Trebalo bi da pogledaš Interbase dokumentaciju. Npr. dokument Language Referece objašnjava detaljno trigere i procedure. Takođe je za početak dobar i Data Definition Guide.

Samo napred. Firebird je odlična baza za učenje i vežbanje.
[ mladenvasic @ 10.07.2005. 17:22 ] @
Uspjeo sam, HVALA NA POMOCI ...