adatbázis válltozásainak naplózása
Sziasztok!
Irhattam volna a mysql topikba,de most a php felöl közelítem meg a dolgokat.
Adott egy log tábla ahová triggerből kerülnek be az adatok.
pl:
ugyan ez a kód updatéra is.
gondoltam array_diffel megkeresem a válltozásokat de nem jőn össze.
A kód:
köszönöm a segítséget.Arra is nyitott vagyok ha ezt adatbázis szinten is meg lehet oldani.
■ Irhattam volna a mysql topikba,de most a php felöl közelítem meg a dolgokat.
Adott egy log tábla ahová triggerből kerülnek be az adatok.
pl:
BEGIN
INSERT INTO /*trigger@tablename_log_insert*/
activity_log/*t*/
SET
bizonylat = NEW.iktatoszam,
tablename = 'szamla',
activity = 'update',
user = NEW.modosito,
/*creator_id = @CURRENT_USER,*/
log_msg = CONCAT_WS('","',"",NEW.eredeti,NEW.bizherk,NEW.szlabeerk,
NEW.bizbeerk,NEW.megnev,NEW.szallito,NEW.szlaszam,NEW.szlevelszam,NEW.fizmod,
NEW.szlakiallitas,NEW.szlateljesites,NEW.szlafizhat,NEW.statusz,NEW.jovairoszla,
NEW.afa,NEW.netto,NEW.brutto,NEW.afaosszeg,NEW.utalosszeg,NEW.utalnap,NEW.megjegyzes,
NEW.ell,NEW.utalhat,NEW.utalmegjegyz,"");
END
INSERT INTO /*trigger@tablename_log_insert*/
activity_log/*t*/
SET
bizonylat = NEW.iktatoszam,
tablename = 'szamla',
activity = 'update',
user = NEW.modosito,
/*creator_id = @CURRENT_USER,*/
log_msg = CONCAT_WS('","',"",NEW.eredeti,NEW.bizherk,NEW.szlabeerk,
NEW.bizbeerk,NEW.megnev,NEW.szallito,NEW.szlaszam,NEW.szlevelszam,NEW.fizmod,
NEW.szlakiallitas,NEW.szlateljesites,NEW.szlafizhat,NEW.statusz,NEW.jovairoszla,
NEW.afa,NEW.netto,NEW.brutto,NEW.afaosszeg,NEW.utalosszeg,NEW.utalnap,NEW.megjegyzes,
NEW.ell,NEW.utalhat,NEW.utalmegjegyz,"");
END
ugyan ez a kód updatéra is.
gondoltam array_diffel megkeresem a válltozásokat de nem jőn össze.
A kód:
$result = mysqli_query($link,"SELECT log_msg FROM activity_log WHERE tablename = '".$form."' AND bizonylat = 'abc/2009'");
$rows = mysqli_num_rows($result)-1;
$versions = array();
while($row = mysqli_fetch_assoc($result))
{
$versions[] = $row;
}
// print_r($versions);
$z=0;
//$tomb = array($versions[0]['log_msg']);//ekkor nem okés
//$tomb1 = array($versions[1]['log_msg']);//ekkor nem okés
$tomb = array("a","I","LEVÉL","2009-02-13","a","1","UTALÁS","2009-02-12","2009-02-12","2009-02-27","0","2");
$tomb1 = array("a","N","LEVÉL","2009-02-13","a","1","UTALÁS","2009-02-12","2009-02-12","2009-02-27","0","2");
print_r($tomb);
print "<br>";
print_r($tomb1);
//echo $versions[$z+1]['log_msg'];
$diff = array_diff($tomb,$tomb1);
print_r($diff);
$rows = mysqli_num_rows($result)-1;
$versions = array();
while($row = mysqli_fetch_assoc($result))
{
$versions[] = $row;
}
// print_r($versions);
$z=0;
//$tomb = array($versions[0]['log_msg']);//ekkor nem okés
//$tomb1 = array($versions[1]['log_msg']);//ekkor nem okés
$tomb = array("a","I","LEVÉL","2009-02-13","a","1","UTALÁS","2009-02-12","2009-02-12","2009-02-27","0","2");
$tomb1 = array("a","N","LEVÉL","2009-02-13","a","1","UTALÁS","2009-02-12","2009-02-12","2009-02-27","0","2");
print_r($tomb);
print "<br>";
print_r($tomb1);
//echo $versions[$z+1]['log_msg'];
$diff = array_diff($tomb,$tomb1);
print_r($diff);
köszönöm a segítséget.Arra is nyitott vagyok ha ezt adatbázis szinten is meg lehet oldani.
Biztos vagy Te ebben?
minden eseményt naplózni
Minden eseményt naplózni kellene.és visszamenőleg megőrizni.
Ki,mikor,melyik táblán,mit változtatott meg.
A táblákon létrehoztam egy létrehozó,létrehozás
modosító,modosítás oszlopokat.
Ebből a az első létrehozót időt ill utolsó modosító és időt megtudom.De ez nem elég
Köszönöm.
ha van más javaslat
Köszönöm