ďťż
 
[MySQL] Problem z wyzwalaczem. ďťż
 
[MySQL] Problem z wyzwalaczem.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] Problem z wyzwalaczem.



ssmirnow@gmail.com - 17-06-2007 00:19
[MySQL] Problem z wyzwalaczem.
  Cze??,

przygotowa?em procedur?, która update'uje b?d? insertuje tablice
`categories_ld`.
Problem w tym, ?e procedura musi by? wywo?ywana przez wyzwalacz w
momencie update'a w?a?nie na powy?szej tabeli, co z oczywistych
wzgl?dów jest nierealne. Przygotowa?em zatem tabelk? 'sygna?ow?' z
triggerem odpalaj?cym procedurk? na ON DELETE.
tabela `categories_ld` ma wi?c aktualnie nast?puj?ce triggery:

CREATE TRIGGER `new_db`.`categories_ld_bu` BEFORE UPDATE on
`new_db`.`categories_ld`
FOR EACH ROW BEGIN

insert into localizedlangs_signal
values('category',NEW.category_id,NEW.lang_id);

oraz:

CREATE TRIGGER `new_db`.`categories_ld_au` AFTER UPDATE on
`new_db`.`categories_ld`
FOR EACH ROW BEGIN

delete from localizedlangs_signal where triggertype = 'category' and
id = NEW.category_id and lang_id = NEW.lang_id;

co w moim przekonaniu powinno wykona? procedur?.

Niestety:

mysql> update categories_ld set category_name = 'test' where lang_id =
'en' and category_id = 15;
ERROR 1442 (HY000): Can't update table 'categories_ld' in stored
function/trigger because it is already used by statement which invoked
this stored function/trigger.

Czy kto? z Was spotka? si? z podobnym zachowaniem i zna mo?e jaki?
workaround do tego ?

z góry dzi?kuj?.

Pozdrawiam
smi.





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-06-2007 00:19

  ssmirnow@gmail.com wrote:
> Cze??,
>
> przygotowa?em procedur?, która update'uje b?d? insertuje tablice
> `categories_ld`.
> Problem w tym, ?e procedura musi by? wywo?ywana przez wyzwalacz w
> momencie update'a w?a?nie na powy?szej tabeli, co z oczywistych
> wzgl?dów jest nierealne. Przygotowa?em zatem tabelk? 'sygna?ow?' z
> triggerem odpalaj?cym procedurk? na ON DELETE.
> tabela `categories_ld` ma wi?c aktualnie nast?puj?ce triggery:
>
> CREATE TRIGGER `new_db`.`categories_ld_bu` BEFORE UPDATE on
> `new_db`.`categories_ld`
> FOR EACH ROW BEGIN
>
> insert into localizedlangs_signal
> values('category',NEW.category_id,NEW.lang_id);
>
> oraz:
>
> CREATE TRIGGER `new_db`.`categories_ld_au` AFTER UPDATE on
> `new_db`.`categories_ld`
> FOR EACH ROW BEGIN
>
> delete from localizedlangs_signal where triggertype = 'category' and
> id = NEW.category_id and lang_id = NEW.lang_id;
>
> co w moim przekonaniu powinno wykona? procedur?.
>
> Niestety:
>
> mysql> update categories_ld set category_name = 'test' where lang_id =
> 'en' and category_id = 15;
> ERROR 1442 (HY000): Can't update table 'categories_ld' in stored
> function/trigger because it is already used by statement which invoked
> this stored function/trigger.
>
>
> Czy kto? z Was spotka? si? z podobnym zachowaniem i zna mo?e jaki?
> workaround do tego ?

A nie masz przypadkiem triggera na tabeli localizedlangs_signal?

--
P.M.




ssmirnow@gmail.com - 17-06-2007 00:19

  On 14 Cze, 13:34, Pawe? Matejski <m...@spam.madej.pl.eu.org> wrote:
> ssmir...@gmail.com wrote:
> > Cze??,
>
> > przygotowa?em procedur?, która update'uje b?d? insertuje tablice
> > `categories_ld`.
> > Problem w tym, ?e procedura musi by? wywo?ywana przez wyzwalacz w
> > momencie update'a w?a?nie na powy?szej tabeli, co z oczywistych
> > wzgl?dów jest nierealne. Przygotowa?em zatem tabelk? 'sygna?ow?' z
> > triggerem odpalaj?cym procedurk? na ON DELETE.
[...]

> A nie masz przypadkiem triggera na tabeli localizedlangs_signal?
>

Mam. Przy usuwaniu danych wywo?uje procedur? modyfikuj?c?
zawarto?? categories_ld. S?dzi?em, ?e umiesczenie odwo?ania
do procedury w osobnej tablicy ustrze?e mnie przed zablokowaniem
wywolania procedury.
Jest wobec tego jaki? inny sposób na osi?gni?cie po??danego przeze
mnie celu tj. podczas update'a wybranych rekordów w categories_ld
ma tak?e zupdate'owa? rekordy "podrz?dne" w tej samej tablicy.
Przyk?adowo update category_name dla lang_id = 'en' musi te?
wymusi? update tego pola dla j?zyka 'us'. Ca?o?c wykonuj? procedur?,
przym problemem jest zautomatyzowane (via trigger) jej wywo?anie.

Pozdrawiam
smi.




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-06-2007 00:19

  ssmirnow@gmail.com wrote:
> On 14 Cze, 13:34, Pawe? Matejski <m...@spam.madej.pl.eu.org> wrote:
>> ssmir...@gmail.com wrote:
>>> Cze??,
>>> przygotowa?em procedur?, która update'uje b?d? insertuje tablice
>>> `categories_ld`.
>>> Problem w tym, ?e procedura musi by? wywo?ywana przez wyzwalacz w
>>> momencie update'a w?a?nie na powy?szej tabeli, co z oczywistych
>>> wzgl?dów jest nierealne. Przygotowa?em zatem tabelk? 'sygna?ow?' z
>>> triggerem odpalaj?cym procedurk? na ON DELETE.
> [...]
>
>> A nie masz przypadkiem triggera na tabeli localizedlangs_signal?
>>
>
> Mam. Przy usuwaniu danych wywo?uje procedur? modyfikuj?c?
> zawarto?? categories_ld. S?dzi?em, ?e umiesczenie odwo?ania
> do procedury w osobnej tablicy ustrze?e mnie przed zablokowaniem
> wywolania procedury.
> Jest wobec tego jaki? inny sposób na osi?gni?cie po??danego przeze
> mnie celu tj. podczas update'a wybranych rekordów w categories_ld
> ma tak?e zupdate'owa? rekordy "podrz?dne" w tej samej tablicy.
> Przyk?adowo update category_name dla lang_id = 'en' musi te?
> wymusi? update tego pola dla j?zyka 'us'. Ca?o?c wykonuj? procedur?,
> przym problemem jest zautomatyzowane (via trigger) jej wywo?anie.

Po prostu si? nie da i ju?. Zrób procedur?, za pomoc? której b?dziesz dokonywa?
zmian na tej tablicy i nie rób bezpo?rednich insertów i updatów.

Albo przejd? na postgresa, on nie ma takich ogranicze?. :)

--
P.M.





ssmirnow@gmail.com - 17-06-2007 00:19

  On 14 Cze, 15:49, Pawe? Matejski <m...@spam.madej.pl.eu.org> wrote:

[...]

>
> Po prostu si? nie da i ju?. Zrób procedur?, za pomoc? której b?dziesz dokonywa?
> zmian na tej tablicy i nie rób bezpo?rednich insertów i updatów.
>
> Albo przejd? na postgresa, on nie ma takich ogranicze?. :)
>

Haha,

jakbym tylko móg?...
utar?o si? juz, ?e gdy mówie o
"kolejnej_rzeczy_której_nie_da_si?_zrobi?_na_mysql " pada
zdanie: "wiesz, mysql to nie oracle... to nawet nie postgres" :P

Tak czy inaczej - dzi?ki za pomoc.

smi.




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-06-2007 00:19

  ssmirnow@gmail.com wrote:
> On 14 Cze, 15:49, Pawe? Matejski <m...@spam.madej.pl.eu.org> wrote:
>
> Haha,
>
> jakbym tylko móg?...
> utar?o si? juz, ?e gdy mówie o
> "kolejnej_rzeczy_której_nie_da_si?_zrobi?_na_mysql " pada
> zdanie: "wiesz, mysql to nie oracle... to nawet nie postgres" :P

Akurat ten sam problem z tego co pami?tam by?o nawet w oracle, przynajmniej w
starszych wersjach. :)

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kfia-tek.keep.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com