Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

prepare stmt unutar triggera, ima li zaobilazno rjesenje?

[es] :: MySQL :: prepare stmt unutar triggera, ima li zaobilazno rjesenje?

[ Pregleda: 2292 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.blic.net.



+10 Profil

icon prepare stmt unutar triggera, ima li zaobilazno rjesenje?17.05.2011. u 14:35 - pre 156 meseci
Na jednoj tabeli zelim da postavim trigger koji ce podatke prepisivati u drugu tabelu (arhiviranje).
Medjutim, ovo ne moze:

delimiter /
create trigger arhiva_nesto after insert on nesto
for each row
BEGIN
prepare stmt from "select CONCAT ('INSERT INTO arhiva.nesto_' , YEAR(NOW()) , ' SET `polje1` = new.polje1, `polje2` = new.polje2')";
execute stmt;
END
/

Dobijem:
ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger

Poenta je da dobijem naziv tabele nesto_tekuca_godina i izbjegnem skripte iz crona i presipanje iz supljeg u prazno...

Ima li lijeka? :(
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?17.05.2011. u 17:03 - pre 156 meseci
na zalost to je limit koji i dalje stoji (da me ubijes ne znam zasto .. mada sam slusao pre par godina "sto je to tako" no eto vidis toliko je bilo zanimljivo objasnjenje da sam ga pod hitno zaboravio) ...

da li ima leka - ima ..

prvo: upgrade na 5.5 (mada ce i 5.1 da radi ali ne toliko dobro)
odma zatim: napravis tu tabelu kao

create table arhiva.nesto (..., godina int, ...) partition by key(godina) partitions 200;

i puni tabelu samo tako ... 200 godina si miran ... sve radi kao da su zasebne tabele (po pitanju performansi etc) a nemas smor

procitaj malo vise na http://dev.mysql.com/doc/refman/5.5/en/partitioning.html
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.broadband.blic.net.



+10 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?17.05.2011. u 19:06 - pre 156 meseci
Baza je 5.5.12, vec neko vrijeme pratim tvoj savjet da koristim mysql rpm-ove tako da distro rpm-ove izbacujem a ubacujem mysql sa compat bibliotekama...

Sto se tice particionisanja totalno sam zaboravio na tu opciju, valjda navika koja postoji prije uvodjenja particija :)

Hvala na pomoci.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?18.05.2011. u 05:42 - pre 156 meseci
nema na cemu :) .. dojavi kako radi sa particijama
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.blic.net.



+10 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?18.05.2011. u 10:40 - pre 156 meseci
Malo se cudno ponasao kad sam rekao 200 particija, trpao je podatke nekim cudnim redom u bazu, pa nisam imao osjecaj kontrole.
To je jedan razlog sto sam odustao od takvog nacina particionisanja.
Drugi razlog je 200 fajlova na disku.

Zbog toga sam malo otezao sebi posao ali je bar stanje urednije:

Napravio sam tabelu i dodao joj samo jednu particiju, za vrijednosti ispod npr. 2008. godine, ali je particija RANGE(`godina`).
Nakon toga sam napravio event koji se izvrsava jednom dnevno i koji provjerava da li ce se godina pomjeriti u toku sledecih 7 dana.
Na osnovu toga dodaje se nova particija za tu godinu.

Code:

CREATE EVENT `kreiraj_TABLE_NAME_particiju` 
ON SCHEDULE EVERY 1 DAY STARTS '2007-01-01 00:00:00' 
ON COMPLETION NOT PRESERVE 
ENABLE COMMENT 'kreira particiju za TABLE_NAME arhivu za sledecu godinu' 
DO 
begin
    select YEAR(NOW()) into @godina;
    select YEAR(NOW()+interval 7 day) into @godina_plus_7;
    if @godina_plus_7 > @godina then
        SET @s := concat ('select count(*) into @particija_postoji from INFORMATION_SCHEMA.PARTITIONS where table_name="TABLE_NAME" and table_schema="DB_NAME" and partition_name="p_',YEAR(NOW())+1,'"');
        PREPARE stmt FROM @s; 
        execute stmt;
        if @particija_postoji = 0 then
            SET @s := CONCAT('alter table TABLE_NAME add partition (partition p_',YEAR(NOW())+1,' values less than (',YEAR(NOW())+2,'))'); 
            PREPARE stmt FROM @s; 
            execute stmt;
        end if;
    end if;
end


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?18.05.2011. u 11:03 - pre 156 meseci
malo vise kucanja .. no mogao si rucno da napravis n particija u startu ... za n-x godina unapred .. uvek ima ono "otpustili ste me a? da vidimo sta ce da se desi za 3 godine kad app prestane da prima podatke" ... ili "necete da platite support ... ok .. cujemo se za 2 godine, odracu vas ko macice" i slicne kobolisticke fore :)
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.blic.net.



+10 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?18.05.2011. u 11:10 - pre 156 meseci
Da, ima taj fazon, ali pu pu, nadam se da se nece desiti neki los scenario
a i ako doijem otkaz (pu, pu) moze se uvijek odraditi drop event :)
 
Odgovor na temu

tarla

Član broj: 15527
Poruke: 1648



+42 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?19.05.2011. u 09:05 - pre 156 meseci
Što se tiče automatizacije, nikada ne treba sve poslove završiti i samo sjediti :)

Ja sam skoro imao scenu da me pitaju "A šta ti zapravo radiš tj šta je tvoj posao?"


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?20.05.2011. u 08:25 - pre 156 meseci
kuku tarla sta si dozvolio ...

zato je iskusno kad radis od kuce :D .. bitno da je tvoj posao odradjen a dal ga radis 2min ili 2000min to nikog ne zanima
 
Odgovor na temu

tarla

Član broj: 15527
Poruke: 1648



+42 Profil

icon Re: prepare stmt unutar triggera, ima li zaobilazno rjesenje?20.05.2011. u 11:37 - pre 156 meseci
Fora je što klijent nije navikao da se djeluje preventivno (da se problemi sprečavaju) nego da se trzaju tek kada nešto umre/crkne/izdahne/odapne...

Predložio sam da ja odem na godišnji na cca 15 dana ali SA ISKLJUČENIM telefonom pa da vide otprilike šta ja radim :) Naravno da je prijedlog odbijen :)


 
Odgovor na temu

[es] :: MySQL :: prepare stmt unutar triggera, ima li zaobilazno rjesenje?

[ Pregleda: 2292 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.