Also, take a look at this ancient document that used to be the standard answer to people asking the same question as yours: http://ibobjects.com/docs/ti_AuditableSeries.ZIP
HTH, Set 2015-12-22 20:26 GMT+01:00 Ann Harrison [email protected] [firebird-support] <[email protected]>: > > > On Tue, Dec 22, 2015 at 9:40 AM, Luigi Siciliano [email protected] > [firebird-support] <[email protected]> wrote: > >> >> I must assign a serial number, without hole, in a column of a fiscal >> document. I must assign the number only when I know if the document is >> complete >> and I think the right moment is on a Before Insert Trigger for the table. >> > > Yes that's a good place, but you've got to be very careful. > Generators/Sequences won't > work because they're deliberately non-transactional. Once you take one > its gone and if > your operation fails, you'll have a hole. > >> >> Is right or the insertion can fail? If not right, when I must assign the >> number to be sure of not have a hole in numeration? >> > > One way to get numbers without holes is to create a table with one field > that contains > the seed for your numbers. In your before insert trigger update that > field adding one to it, > then read to get the new value. Unfortunately, if someone else has > inserted a record > concurrently, your transaction will wait then get an error and you'll need > to re-run the > whole thing. > > Check the FAQ's at FirebirdSQL.org for other ways of handling this > problem. > > > Good luck, > > Ann > > >> >> > > >
