ORACLE - zdarzenie o zmianach w tabelach
szyfrantd - 13-09-2007 00:04
ORACLE - zdarzenie o zmianach w tabelach
Witam wszystkich grupowiczow!
Pytanie dotyczy tego, w jaki sposob przechwycic, otrzymac komunikat z serwera oracle-owego, ze w tabeli np. A, uzytkownik "Rysiu" dokonal zmian (INSERT, UPDATE, DELETE). Wiem, ze w Interbase czy MSSQL jest to mozliwe, do oracle-a nigdy nie bylem przekonany (moze to zle), a teraz musze napisac program dla tego systemu zarzadzania baza danych.
Siegnalem do google ale dla oracle znalazlem jedynie podpowiedz zeby utworzyc "semafor" (kolejna tabele) i w nim odnotowywac wszelkie zmiany.
Dziekuje za podpowiedz! Pozdrawiam.... Darek
Ps: A mozna w Oraclu jakims poleceniem systemowym sprawdzic jaki ostatni rekord zostal wstawiony (insert) do tabeli A i otrzymac jego ID??? Thx
michal.zglinski@gmail.com - 13-09-2007 00:04
> Pytanie dotyczy tego, w jaki sposob przechwycic, otrzymac komunikat z > serwera oracle-owego, ze w tabeli np. A, uzytkownik "Rysiu" dokonal zmian > (INSERT, UPDATE, DELETE). Wiem, ze w Interbase czy MSSQL jest to mozliwe, do > oracle-a nigdy nie bylem przekonany (moze to zle), a teraz musze napisac > program dla tego systemu zarzadzania baza danych.
Triggerami. Tutaj szybka pomoc http://www.adp-gmbh.ch/ora/sql/create_trigger.html
Pozdrawiam Michal
dap - 13-09-2007 00:04
szyfrantd wrote: > Witam wszystkich grupowiczow! > > Pytanie dotyczy tego, w jaki sposob przechwycic, otrzymac komunikat z > serwera oracle-owego, ze w tabeli np. A, uzytkownik "Rysiu" dokonal zmian > (INSERT, UPDATE, DELETE). Wiem, ze w Interbase czy MSSQL jest to mozliwe, do > oracle-a nigdy nie bylem przekonany (moze to zle), a teraz musze napisac > program dla tego systemu zarzadzania baza danych. > > Siegnalem do google ale dla oracle znalazlem jedynie podpowiedz zeby > utworzyc "semafor" (kolejna tabele) i w nim odnotowywac wszelkie zmiany. > > Dziekuje za podpowiedz! > Pozdrawiam.... > Darek > > > Ps: A mozna w Oraclu jakims poleceniem systemowym sprawdzic jaki ostatni > rekord zostal wstawiony (insert) do tabeli A i otrzymac jego ID??? > Thx
Hej, w 10g jest możliwość używania tz. flashback query, dzieki czemu widzisz co i kiedy sie działo w tabeli.
Zobacz na ten kod
drop table ala ; create table ala (ala number) ;
insert into ala(ala) values(1) ; commit ; insert into ala(ala) values(3) ; commit ; insert into ala(ala) values(1) ; commit ; insert into ala(ala) values(4) ; commit ; insert into ala(ala) values(8) ; commit ; insert into ala(ala) values(3) ; commit ; delete from ala where ala < 3 ; commit ; insert into ala(ala) values(1) ; commit ; update ala set ala = -10 where ala = 1 ; commit ; insert into ala(ala) values(33) ; commit ; insert into ala(ala) values(34) ; commit ; insert into ala(ala) values(343) ; commit ; delete from ala ;
col ala for 9999 col versions_opertion for a1 col versions_xid for a20 col versions_starttime for a21 col versions_endtime for a21 col versions_startscn for 999999999 col versions_endscn for 999999999
select versions_operation, versions_xid , versions_starttime, versions_endtime , versions_startscn , versions_endscn , ala from ala versions between scn minvalue and maxvalue ;
V VERSIONS_XID VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_STARTSCN VERSIONS_ENDSCN ALA - -------------------- --------------------- --------------------- ----------------- --------------- ----- I 04000A00F72D0000 12-SEP-07 03.24.35 PM 39713247 343 I 0A002700CB2D0000 12-SEP-07 03.24.35 PM 39713245 34 I 03000700343D0000 12-SEP-07 03.24.35 PM 39713243 33 U 08002000623D0000 12-SEP-07 03.24.35 PM 39713241 -10 I 090022005B3D0000 12-SEP-07 03.24.35 PM 12-SEP-07 03.24.35 PM 39713238 39713241 1 D 07000900102E0000 12-SEP-07 03.24.35 PM 39713236 1 D 07000900102E0000 12-SEP-07 03.24.35 PM 39713236 1 I 06000C00603D0000 12-SEP-07 03.24.35 PM 39713233 3 I 02001800353D0000 12-SEP-07 03.24.35 PM 39713231 8 I 010017001C2E0000 12-SEP-07 03.24.35 PM 39713229 4 I 03000D002E3D0000 12-SEP-07 03.24.35 PM 12-SEP-07 03.24.35 PM 39713227 39713236 1
V VERSIONS_XID VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_STARTSCN VERSIONS_ENDSCN ALA - -------------------- --------------------- --------------------- ----------------- --------------- ----- I 05000B00C63E0000 12-SEP-07 03.24.35 PM 39713225 3 I 04002000F72D0000 12-SEP-07 03.24.35 PM 12-SEP-07 03.24.35 PM 39713223 39713236 1 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 343 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 -10 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 3 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 8 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 4 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 34 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 3 D 09002700503D0000 12-SEP-07 03.22.59 PM 39713189 33 12-SEP-07 03.22.59 PM 39713189 33
V VERSIONS_XID VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_STARTSCN VERSIONS_ENDSCN ALA - -------------------- --------------------- --------------------- ----------------- --------------- ----- 12-SEP-07 03.22.59 PM 39713189 3 12-SEP-07 03.22.59 PM 39713189 34 12-SEP-07 03.22.59 PM 39713189 4 12-SEP-07 03.22.59 PM 39713189 8 12-SEP-07 03.22.59 PM 39713189 3 12-SEP-07 03.22.59 PM 39713189 -10 12-SEP-07 03.22.59 PM 39713189 343
dap
Thomas Olszewicki - 13-09-2007 00:04
On Sep 12, 5:49 am, "szyfrantd" <szyfra...@poczta.onet.pl> wrote: > Witam wszystkich grupowiczow! > > Pytanie dotyczy tego, w jaki sposob przechwycic, otrzymac komunikat z > serwera oracle-owego, ze w tabeli np. A, uzytkownik "Rysiu" dokonal zmian > (INSERT, UPDATE, DELETE). Wiem, ze w Interbase czy MSSQL jest to mozliwe, do > oracle-a nigdy nie bylem przekonany (moze to zle), a teraz musze napisac > program dla tego systemu zarzadzania baza danych. > > Siegnalem do google ale dla oracle znalazlem jedynie podpowiedz zeby > utworzyc "semafor" (kolejna tabele) i w nim odnotowywac wszelkie zmiany. > > Dziekuje za podpowiedz! > Pozdrawiam.... > Darek > > Ps: A mozna w Oraclu jakims poleceniem systemowym sprawdzic jaki ostatni > rekord zostal wstawiony (insert) do tabeli A i otrzymac jego ID??? > Thx
Darek, Duzo mozliwosci, ale zaleza od versji Oracle. Podaj pelna versje np: 10.2.0.2 EE (Enterprise edition). Thomas
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.planette.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 |
|