problem z triggerem
robert - 01-12-2005 20:33
problem z triggerem
Witam serdecznie
potrzebuje pomocy
mam w bazie ms sql server przykładowo dwie tabele pierwsza o nazwie faktura z (np. id_faktury i kwota_faktury) druga o nazwie spłata z (np id_splaty, id_faktury i kwota splaty)
potrzebuje zabezpieczyć tabele spłata w taki sposób by suma spłat wybranej (po id_faktuy) faktury nie mogła być większa od faktury
chyba musi to być trigger sprawdzający poprawność przed wprowadzeniem danych do tabeli. mam jeszcze stworzony widok view suma_splat (np id_faktury , sum (kwota_splaty))
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Andrzej Kałuża - 01-12-2005 20:33
Witam,
Do tabeli faktur dodajemy pole z sumą spłat i zakładamy ograniczenie (check (suma_splat <= suma_faktury)) Na tabeli spłat dodajemy trigger insert, update, delete który zaktualizuje odpowiednio tabelę faktur i juś ;o)
Andrzej Kałuża
Użytkownik "robert" <robert4720@vp.pl> napisał w wiadomości news:41ef.00000235.438cc3ce@newsgate.onet.pl... > Witam serdecznie > > potrzebuje pomocy > > > mam w bazie ms sql server przykładowo dwie tabele > pierwsza o nazwie faktura z (np. id_faktury i kwota_faktury) > druga o nazwie spłata z (np id_splaty, id_faktury i kwota splaty) > > potrzebuje zabezpieczyć tabele spłata w taki sposób by suma spłat wybranej > (po > id_faktuy) faktury nie mogła być większa od faktury > > chyba musi to być trigger sprawdzający poprawność przed wprowadzeniem > danych > do tabeli. > mam jeszcze stworzony widok view suma_splat (np id_faktury , sum > (kwota_splaty)) > > -- > Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
robert4720@vp.pl - 02-12-2005 11:41
> Witam, > > Do tabeli faktur dodajemy pole z sumą spłat i zakładamy ograniczenie (check > (suma_splat <= suma_faktury)) > Na tabeli spłat dodajemy trigger insert, update, delete który zaktualizuje > odpowiednio tabelę faktur i juś ;o) > > Andrzej Kałuża > > Użytkownik "robert" <robert4720@vp.pl> napisał w wiadomości > news:41ef.00000235.438cc3ce@newsgate.onet.pl... > > Witam serdecznie > > > > potrzebuje pomocy > > > > > > mam w bazie ms sql server przykładowo dwie tabele > > pierwsza o nazwie faktura z (np. id_faktury i kwota_faktury) > > druga o nazwie spłata z (np id_splaty, id_faktury i kwota splaty) > > > > potrzebuje zabezpieczyć tabele spłata w taki sposób by suma spłat wybranej > > (po > > id_faktuy) faktury nie mogła być większa od faktury > > > > chyba musi to być trigger sprawdzający poprawność przed wprowadzeniem > > danych > > do tabeli. > > mam jeszcze stworzony widok view suma_splat (np id_faktury , sum > > (kwota_splaty)) > > > > -- > > Wysłano z serwisu OnetNiusy: http://niusy.onet.pl > >
dzięki bardzo za odpowiedz
ale coś i tak robię źle
więc zacznę od początku podam cody tabelek i triggera może ktoś sprawdzi co jest nie tak :
create table zobowiazanie ( id_zobowiazania int primary key not null identity(1,1), nr_fak varchar (30)not null, kwota_netto money not null, check( kwota_netto >0 ), kwota_brutto money not null, check( kwota_netto >0 ), kwota_kaucji money not null, kwota_do_wyplaty money not null, check (kwota_do_wyplaty = (kwota_brutto - kwota_kaucji)), suma_splat money , check (suma_splat <= kwota_do_wyplaty) )
Create table splata ( id_splaty int primary key not null identity (1,1), id_zobowiazania int Foreign Key references zobowiazanie(id_zobowiazania)not null, Data_splaty datetime not null, kwota_splaty_brutto money not null, )
create view sum_splat as(select id_zobowiazania, sum (kwota_splaty_brutto)as 'kwota_splaty_brutto' from splata group by id_zobowiazania )
create trigger dodaj_sum_splat on splata for insert,update,delete as begin UPDATE zobowiazanie SET suma_splat = sum_splat.kwota_splaty_brutto+ kwota_splaty_brutto - - nowa wartość FROM sum_splat where sum_splat.id_zobowiazania = zobowiazanie.id_zobowiazania end
i tak w tabelce zobowiązania mam jakieś zobowiązanie ale bez ostatniej pozycji suma_splat tam mam same zera gdy dodaje spłatę do konkretnego zobowiązania trigger powinien zaktualizować tabelkę zobowiązania do wartości która jest już w zobowiązanie.suma_splat powinien dodać nową wartość ale wyskakuje komunikat ( check założony na zobowiązanie.suma_splat nie chec wpuścić żadnej wartości.) co jest ? widok mam zrobiony po to żeby nie sumować spłat w trigger tylko pobierać wartość sumy od razu. Wiadomo że jakieś zobowiązanie może być spłacane kilka razy ale suma spłat nie może przekroczyć wartości danego zobowiązania. Co robić ?
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
robert4720@vp.pl - 05-12-2005 19:19
> > Witam, > > > > Do tabeli faktur dodajemy pole z sumą spłat i zakładamy ograniczenie (check > > (suma_splat <= suma_faktury)) > > Na tabeli spłat dodajemy trigger insert, update, delete który zaktualizuje > > odpowiednio tabelę faktur i juś ;o) > > > > Andrzej Kałuża > > > > Użytkownik "robert" <robert4720@vp.pl> napisał w wiadomości > > news:41ef.00000235.438cc3ce@newsgate.onet.pl... > > > Witam serdecznie > > > > > > potrzebuje pomocy > > > > > > > > > mam w bazie ms sql server przykładowo dwie tabele > > > pierwsza o nazwie faktura z (np. id_faktury i kwota_faktury) > > > druga o nazwie spłata z (np id_splaty, id_faktury i kwota splaty) > > > > > > potrzebuje zabezpieczyć tabele spłata w taki sposób by suma spłat wybranej > > > (po > > > id_faktuy) faktury nie mogła być większa od faktury > > > > > > chyba musi to być trigger sprawdzający poprawność przed wprowadzeniem > > > danych > > > do tabeli. > > > mam jeszcze stworzony widok view suma_splat (np id_faktury , sum > > > (kwota_splaty)) > > > > > > -- > > > Wysłano z serwisu OnetNiusy: http://niusy.onet.pl > > > > > > dzięki bardzo za odpowiedz > > ale coś i tak robię źle > > więc zacznę od początku podam cody tabelek i *triggera może ktoś sprawdzi co > jest nie tak : > > create table zobowiazanie ( > id_zobowiazania int primary key *not null *identity(1,1), > nr_fak varchar (30)not null, > kwota_netto money not null, check( kwota_netto >0 ), > kwota_brutto money not null, check( kwota_netto >0 ), > kwota_kaucji money not null, > kwota_do_wyplaty money not null, check (kwota_do_wyplaty = (kwota_brutto - > kwota_kaucji)), > suma_splat money , check (suma_splat <= kwota_do_wyplaty) > ) > > Create table splata ( > id_splaty int primary key not null identity (1,1), > id_zobowiazania int Foreign Key references zobowiazanie(id_zobowiazania)not > null, > Data_splaty datetime not null, > kwota_splaty_brutto money not null, > ) > > > create view sum_splat > as(select id_zobowiazania, sum (kwota_splaty_brutto)as 'kwota_splaty_brutto' > from splata > group by id_zobowiazania > ) > > > > create trigger dodaj_sum_splat on splata > for *insert,update,delete * > as > begin > * UPDATE zobowiazanie > * SET suma_splat = sum_splat.kwota_splaty_brutto+ kwota_splaty_brutto - - > nowa wartość > * FROM sum_splat > * where sum_splat.id_zobowiazania = zobowiazanie.id_zobowiazania > end > > > i tak w tabelce zobowiązania mam jakieś zobowiązanie ale bez ostatniej pozycji > suma_splat tam mam same zera gdy dodaje spłatę do konkretnego zobowiązania > trigger powinien zaktualizować tabelkę zobowiązania do wartości która jest już > w zobowiązanie.suma_splat *powinien dodać nową wartość *ale wyskakuje > komunikat ( check *założony na zobowiązanie.suma_splat nie chec wpuścić żadnej > wartości.) co jest ? > widok mam zrobiony po to żeby nie sumować spłat w trigger tylko pobierać > wartość sumy od razu. Wiadomo że jakieś zobowiązanie może być spłacane kilka > razy ale suma spłat nie może przekroczyć wartości danego zobowiązania. Co > robić ? > > > -- > Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
halo proszę o jakąś podpowiedz
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|