[Lazarus] newbie question: tsqlquery; primarykey; insert.

Antonio Fortuny a.fortuny at sitasoftware.lu
Tue Nov 26 16:52:06 CET 2013


Le 26/11/2013 16:02, Kovács László a écrit :
> Hi dear list members.
> I'm new here. Approximately 17 years ago I worked as a sysadmin, gave 
> every day support for 70 peoples how to use their computers. I also 
> made numerous small apps, to help the work of the firm. That time I 
> did it with Delphi 1, used DBase and Paradox tables.
> I did this job for a few years, then the life pushed me away from 
> programming, but not too far away from computers.
> Now I'm here, and seem to come back.
> My friend wants me to create a database app, because the task is just 
> too complicated to do by himself in MS Access.
> I put my cents on Lazarus, as I can't afford any Delphi (and like) 
> available today.
> I choosed Firebird (a very cost effective solution as well) as 
> database engine, started with embedded, but later when as development 
> progresses need move to real client-server.
> So, I created my database, that wasn't too hard with IBExpert personal 
> (I had to look for something to substitute Database desktop).
> I also managed to create my autoinc fields, using Firebirds triggers 
> and generators. Each of my tables has its own counters.
> But I'm stuck with getting the newly inserted rows ID.
> How do you get it?
Create as many sequences (new name for generators) as you need
In the application when you need a new value for a sequence (an insert 
for instance) I execute the next query just before:
*/select next value for my_generator_name as column_name_i_want from 
rdb$database/*
and I get the value with the query which executed the query (some TQuery 
component, using FieldByName('column_name_i_want).AsInteger or better 
AsLargeInt)
The unique ID has been definitely reserved and the I can use it into any 
other update or insert with other tables.
This is my way but it not the only one but because I want to control 
everything which reports to database, i'm used to this method

Antonio.
> Or if you generate the ID on the client side, how do you make 
> absolutely sure, no other user can get the same ID.
That's easy: it is guaranteed by Firebirdwhatever way you choose
> Is there a way to ask Firebird about the next value of a generator? 
> And then I could use that ID upon an insert, and would deactivate the 
> triggers.
yes, read above, no need to deactivate or reactivate triggers
> If I'm on a wrong way with this ID thing, any other "Best practices" 
> are welcome. ;)
> I highly appreciate every help word!
> Thank you very much in advance
> Laszlo Kovacs
>
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20131126/67bc6421/attachment-0003.html>


More information about the Lazarus mailing list