SP hívása triggerből
Sziasztok!
A kérdésem az lenne lehet-e triggerből sp-t meghívni?
vagy az alább általam írt példa nem is működő képes.
A hiba a következő:Recursive limit 0(as set by the max_sp_recursion_depth variable)was exceeded for routine
A következő triggert csináltam:
CREATE TRIGGER `partner_before_upd_tr` BEFORE UPDATE ON `partner`
FOR EACH ROW
BEGIN
CALL sp_login_out('AA');
END;
A meghívott sp_login_out a következő
CREATE DEFINER = 'root'@'localhost' PROCEDURE `sp_login_out`(IN nev VARCHAR(20))
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
INSERT INTO belep_log (NAME) VALUES (nev);
END;
KÖSZÖNÖM a segítséget!
■ A kérdésem az lenne lehet-e triggerből sp-t meghívni?
vagy az alább általam írt példa nem is működő képes.
A hiba a következő:Recursive limit 0(as set by the max_sp_recursion_depth variable)was exceeded for routine
A következő triggert csináltam:
CREATE TRIGGER `partner_before_upd_tr` BEFORE UPDATE ON `partner`
FOR EACH ROW
BEGIN
CALL sp_login_out('AA');
END;
A meghívott sp_login_out a következő
CREATE DEFINER = 'root'@'localhost' PROCEDURE `sp_login_out`(IN nev VARCHAR(20))
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
INSERT INTO belep_log (NAME) VALUES (nev);
END;
KÖSZÖNÖM a segítséget!
Elvileg lehet
Egyébként miért nem teszed be nyersen az insertet? Én is próbálkoztam MySQLben struktúráltan programozni, view-kkal és SP-kkel, de rá kellett jönnöm, hogy (még) sajnos nem alkalmas rá túlzottan, tehát célszerű a bonyolultságot alacsonyan tartani.
szerintem nem :)
Azért nem, mert ugye újrahasznosíthatóság, szépség és nem illik gányolni SQL-ben sem... :)
Ez már régóta nem igaz, én napi szinten írok egészen bonyolultakat és semmi gond nincs velük, egyszerűen csak meg kell tanulni a MySQL jellegzetességeit.
Azért. :)
Szép és jó a MySQL, de vannak benne apróbb gondol. (PL mikor tervezik implementálni a full joint, stb).
ezért? :)
Üdv,
Felhő
Általánosságok
mysql bug
hányas verziójú MySQL-t használsz? :) Egy időben volt egy ilyen bug benne, mert ennek a hibaüzenetnek itt nem szabadna "fellépnie", ugyanis nincs rekurzió. Ezt a hibát a következő környezeti változó beállításával lehet orvosolni:
set @##kukac##global.max_sp_recursion_depth=255;
Még régebben pedig nem lehetett triggerből sp-t hívni, de ez már nagyon rég volt.
Köszi a válaszokat
Tehát elvileg működnie kellene a kódnak.
Más.
Felhasználók által elvégzett műveleteket kellene loggolnom adatbázisba. Pl insert update delete;
trigger
Üdv,
Felhő
példa
Köszi a segítséget.
példa trigger
/* ".__FILE__."##kukac##".__LINE__." */
). A másodikat meg azért szoktam, mert gyakran kell rákeresni egy tábla nevére, és néha van annyira általános, hogy nehéz kiszűrni fals találatokat, így viszont ez nem gond.Magát az insertet kiteheted egy tárolt eljárásba, és akkor a triggereid kb. csak illesztések a loggolandó tábla és a log tábla között. A @CURRENT_USER meg mondjuk úgy kaphat értéket, hogy beleteszed a DB layeredbe, hogy kapcsolódáskor automatikusan beállítja az aktuális user azonosítójával.
Üdv,
Felhő
nagyon köszi!!!!