
Delphi - TQuery - ID z antoinc po insert
Pomocou TQuery pridám SQL príkazom do tabuľky nejaký záznam. V tabuľke je stĺpec autoinc. Dá sa nejakým príkazom zistiť naposledy pridelená hodnota autoinc?
Mám na mysli obdobu PHP príkazu pre MySQL: mysql_insert_id()
Akú databázu používaš?
Nestačilo by niečo ako select max(stlpec_autoinc)?
V MS SQL je tuším funkcia SCOPE_IDENTITY() ktorá vracia poslednú hodnotu vygenerovanú po príkaze insert...
Štandardný Paradox 7 myslím.
Pokud pres BDE, tak se zkus podivat na nejake API funkce DBIneco. jejich popis je v helpu k BDE
Ale uz z toho, ze chces k necemu zjistovat max. hodnotu AutoInc mi to zavani spatnym navrhem DB. K cemu to potrebujes?
Pouzivat AutoInc na vazby mezi tabulkami neni moc vhodne...
Povedzme, že máš nejaké meno a po jeho pridaní sa v tabuľke vytvorí záznam, kde sa v dvoch stĺpcoch bude nachádzať jeho ID a to samotné meno. To ID je autoinc a je použité na prepojenie s inou tabuľkou. Síce robím hlavne s MySQL a PHP, ale tam autoincrement je na prepojenie tabuliek použitý takmer vždy. Aký má potom autoinc význam, ak sa nemá používať? Potom by som to videl jedine na mazanie záznamov podľa jedinečného autoinc ID.
Edit: Možno by si mohol napísať nejaký článok o návrhu databáz s ohľadom na autoinc. Ja viem len to čo ma naučila prax.
Autoinc pouzivam v pripade, kdy potrebuju nejaky jedinecny index. Ale jakmile to chci na propojeni tabulek, uz si vytvarim vlastni ID.
v okamziku, kdybys chtel takove tabulky zpracovavat - sehravat, importovat apod. uz budes mit problem, protoze to budes muset osetrovat rucne - nezustava ti zachovane propojeni hlavicka-polozky
Myslím, že rozumiem. Budem vedieť do budúcna. Toto je program v Delphi, ktorý som robil takmer pred 5 rokmi, keď som sa učil SQL a na to, že som vtedy vedel o SQL len to čo ma naučila knižka Vreckový sprievodca SQL (bol tam dosť kvalitne popísaný aj návrh databázy), či ako sa to volalo, tak som s tým nadmieru spokojný. Samozrejme dosť mi radili aj tu na poradni. Teraz už nemá význam ten program meniť (dnes by som ho napísal určite lepšie).
Ale keď sa tak zamýšľam nad tým, čo si napísal, tak ručne to musím ošetrovať aj vtedy, ak by som si vytvoril vlastné ID, pretože v prípade importu by mohlo ID byť duplicitné, takže asi celkom nerozumiem.
Jinak posledni autoincrement muzes zjistit SQL dotazem, pripadne pres BDE API
Asi bych si napsal funkci, ktere bych predal tabulku, pole a ona by vratila MAX hodnotu z toho pole.
Pak ji muzes jednoduse zavolat i pri vkladani radku k te sve hlavicce
Tak je to asi najjednoduchšie. Asi to aj tak spravím.
A ďakujem za vysvetlenie v príklade. Vyzerá to zaujímavo a do budúcnosti budem takéto možnosti zvažovať.