tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Jak získat hodnotu autoincrement

před 7 lety

ji_ri_k
Člen | 44

Zdravím Vás,

chci se zeptat zda lze pomocí dibi (verze 2) na MySQL databázi zjistit hodnotu auto_increment. Nepotřebuji zjistit ID po posledním dotazu – prostě potřebuji kdykoliv bez jakéhokoliv vkládání dat znát hodnotu auto_increment – např. za použití metody getDatabaseInfo(). A pokud to lze tak mám ještě druhý dotaz – jak se to bude chovat při transakci, která ještě není „commitnutá“. Tzn. když vložím v transakci nějaký záznam a před „commitnutím“ budu chtít znovu zjistit hodnotu auto_inrement.

Potřebuji totiž spárovat dva zdroje dat XML a databázi, kde v XML mohou být stejné ID jako v databázi ovšem u zcela odlišných záznamů. Potřebuji tedy přepsat (změnit) již existující klíče v MySQL databázi na nové (jsou provázány s jinými tabulkami) a namísto těch původních vložit data z XML.
Výsledek musí být takový, že po této transakci zůstanou v MySQL databázi údaje stejné jako v XML (se stejnými ID), ale také ty které v XML nebyly – jen budou uložena dále pod jinými ID.

Pokud by bylo možné zjistit následující hodnotu auto_increment výše zmíněné řešení by bylo jednoduše realizovatelné. Nebo by to šlo řešit jinak? (jedná se o propojení dvou aplikací s tím, že jedna umí data jen odesílat nikoliv přijímat – proto tam vznikají stejná ID).

Moc děkuji za odpověď

před 7 lety

Milo
Nette Core | 1119

Pokud vím, z reflexe MySQL hodnotu autoincrement nevysosáš (nejsem ale MySQL guru). Když pogooglíš, najdeš SQL dotazy, jak hodnotu autoincrement selectnout.

Otázka k chování v transakci patří na nějaké MySQL fórum.