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

Null kolona i trigger!!!

[es] :: Oracle :: Null kolona i trigger!!!

[ Pregleda: 5789 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Comii

Član broj: 180123
Poruke: 49
89.216.78.*



Profil

icon Null kolona i trigger!!!25.08.2008. u 21:02 - pre 189 meseci
Napravio sam tabelu materijali evo koda za nju:
CREATE TABLE materijali (
id_materijala number(6) constraint materijal_pk PRIMARY KEY,
naziv varchar2(10) NOT NULL,
cena number NOT NULL,
kolic_mat number(10) default 0,
opis varchar2(50) NULL);

A potom trigger nad drugom tabelom, tabelom Fakture, koji u zavisnosti od tipa fakture da li je prodaja ili kupovina menja vrednost kolone kolic_mat u tabeli materijali. Evo i tog koda:

create or replace trigger fakture_tr1
after insert on fakture
for each row
begin
if (lower(:new.tip)='prodaja') then
update materijali
set KOLIC_MAT= KOLIC_MAT-:new.kolicina where id_materijala=:new.id_materijala;
end if;
end;

Trigger radi ali je problem sto je prvo potrebno uneti neku vredost u tabelu materijali u koloni kolic_mat, jer je nemoguce izvoditi bilo kakve aritmeticke opreracije sa kolonom koja je NULL. Ovo sam pokusao resiti time sto sam pri kreiranju tabele uneo da je kolic_mat number(10) DEFAULT 0, ali ne pomaze.


 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 07:00 - pre 189 meseci
nvl(KOLIC_MAT,0)
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.tekostolac.co.yu.



Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 07:07 - pre 189 meseci
brzak je u pravu.
Nego, malo o logici aplikacije. Ako sam dobro shvatio ti sa fakturom menjas stanje robe u nekom da kazem magacinu?
Ako treba onda nema potrebe
 
Odgovor na temu

Comii

Član broj: 180123
Poruke: 49
89.216.78.*



Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 08:23 - pre 189 meseci
Hvala Brzak, puno! Ne znam kako se toga nisam setio.
Na osnovu fakture i otkupnog lista menja se stanje tj. kolicina materijala!
Evo i dela slike samog relacionog dijagrama, svaki komentar ce mi dobro doci:
Prikačeni fajlovi
 
Odgovor na temu

aldabic
Serbia

Član broj: 18240
Poruke: 98
*.premiumsoft.co.yu.



Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 08:43 - pre 189 meseci
1. kolic_mat bih stavio da je not null default 0. Koji je to materijal cija je kolicina null?
2. Kako storniras fakturu? npr, pogresio covek..
3. Radnike bi mogao da vodis po nekoj internoj sifri, ko ce na masci da kuca svoj maticni broj? ili, na triggeru ili masci ovo polje popuni automatski (select jmbg from radik r where r.radnik = user)
4. Kako kad prodas 2 srafa po 100din i 3 metle po 50 din istoj firmi, odjednom? Pravis dve fakture?
5. Da li neke proizvode vodis po oznaci? npr. motor ima serijski broj, moras znati koji si prodao na fakturi..

npr. sifra naziv oznaka
1 sraf
2 fiat punto 123456789
3 klima uredjaj W3245e
4 metla
5 secer
 
Odgovor na temu

Comii

Član broj: 180123
Poruke: 49
89.216.78.*



Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 09:06 - pre 189 meseci
Sama aplikacija koju radim je seminarski rad, i da daleko je od realne slike nekog sistema koji bi se primenio u praksi. Ali ovako:
Firma se bavi otkupom i prodajom sekundarnih sirovina znaci radi sa materijalima kao sto su Olovo, Gvozdje...
Kada kupuju neki materijal koji jos uvek nemaju na placu potrebno je unesti samo naziv materijala u tabeli materijali da bi njegov id bio upisan u fakture odnosno otkupne_listove. A sama kolicina bice upisana na osnovu triggera.
Pored ovog triggera imam i triggere u slucaju izmene podataka ili brisanja, isti su napravljeni za otkupne_listove:

create or replace trigger fakture_tr2
after DELETE on fakture
for each row
begin
if (lower(:old.tip)='prodaja') then
update materijali
set KOLIC_MAT=nvl(KOLIC_MAT,0)+:old.kolicina where id_materijala=:old.id_materijala;
end if;
end;
create or replace trigger fakture_tr3
after UPDATE on fakture
for each row
begin
if (lower(:old.tip)='prodaja') then
update materijali
set KOLIC_MAT=nvl(KOLIC_MAT,0)-:old.kolicina+:new.kolicina where id_materijala=:old.id_materijala;
end if;
end;

Jmbg sam stavio za pk iz gore navedenog razloga, skolski primer, i ako bi mi neki id koji bih prikacio sekvenci dobro dosao. Inace ovaj pk kasnije mi je pravio problem pri pravljenju formi u Application Express-u.

Firma se bavi samo prodajom materijala tako da mislim je broj komada nepotreban, posto imam samo kolicinu koja je u kg.

Hvala na komentaru Aldabic!!!
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 09:16 - pre 189 meseci
Ajde kada vec ucis jos jedna napomena. Kolone kao sto je PIB ne treba stavljati u PK, posto to moze da bude promenjivo. Treba koristiti nekakvu sekvencu za takve stvari.
 
Odgovor na temu

Comii

Član broj: 180123
Poruke: 49
89.216.78.*



Profil

icon Re: Null kolona i trigger!!!26.08.2008. u 09:32 - pre 189 meseci
Thank's again!
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.tekostolac.co.yu.



Profil

icon Re: Null kolona i trigger!!!27.08.2008. u 09:39 - pre 189 meseci
Ako se vec ucis
Moras da pravis razliku izmedju azuriranja stanja zaliha i prodaje (odnosno naplate). Ti stanje zaliha azuriras izdatnicom/otpremnicom a fakturu vezujes za tu izdatnicu/otpremnicu tj nju naplacujes. Tako da veza materijali (odnosno magacin) - faktura nije OK.
Ako treba onda nema potrebe
 
Odgovor na temu

Comii

Član broj: 180123
Poruke: 49
89.216.78.*



Profil

icon Re: Null kolona i trigger!!!27.08.2008. u 15:49 - pre 189 meseci
I Otkupni list a i Faktura mogu biti ulazni odnoso izlazni. Sa njima se regilise i prodaja i kupovina, samo sto je faktura vezana za firme a otkupni list za fizicka lica, jer ova dva entiteta,Firme i Fizicka lica, nisam mogao spojiti u jedan.

U formi koju sam napravio za Fakture kod atributa Tip napravio sam staticku listu u koju sam uneo "prodaja" i "kupovina". Tako da svaki put kada korisnik unosi podatke za fakturu u padajucoj listi se, kod tipa, pojavljuju:
kupovina
prodaja

Pa na osnovu Tipa se zna da li je prodaja ili kupovina.

Hvala na komentaru!
 
Odgovor na temu

[es] :: Oracle :: Null kolona i trigger!!!

[ Pregleda: 5789 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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