2010/12/28 Mircea MITU <mir...@sigu.ro>:
> Hello
>
> am o mica aplicatie interna ce foloseste 2 tabele mysql, de forma:
>
> T1: id (int, autoincrement), nume
> T2: id, ceva
>
> Intr-un anume scenariu, datele le inserez astfel (kinda pseudocod):
>
>        query1: insert into t1 NULL, valoare_nume (T1.id fiind
>        autoincrement, este generat de mysql)
>        query2: get T1.id de mai sus
>        query3: insert into t2 t1.id (de la query2), valoare_ceva
>
> Exista vreo metoda de a obtine T1.id la pasul query1, astfel incat sa
> scap de query2? Sau sunt alte metode de optimizari ce-mi scapa, fara a
> afecta structura tabelelor? Stiu de la inceput valoare_nume si
> valoare_ceva, dar nu stiu T1.id.
>

Disclaimer: nu-s DBA, asa ca scuze daca ma exprim putin dupa ureche.

Afaik, cam orice API de mysql iti ofera direct id-ul generat de
autoincrementul de la ultimul query, astfel ca query2 e de obicei gata
facut (in php a dat un colistas link, in perl DBD::mysql iti da
$dbh->{'mysql_insertid'} sau mysql_insertid(), probabil ca si in ruby,
python and co. ai ceva de genul asta (de notat ca it's a mysql thing,
nu e sql standard).

Alternativ, stiu ca vazusem niste inginerii facute cu foreign keys si
triggere, dar nu stiu in ce masura asta contrazice conditia ta cu
"afectarea structurii tabelelor" (nu se adauga coloane, ci doar
indecsi).

Daca apare vreun colistas mai mester in ale designului de baze de
date, m-ar interesa si pe mine cum se rezolva elegant genul asta de
probleme.


-- 
Petre.
_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui