IMHO, Autonumbers should not be used for any "real world" values. Values that have any significance to the end user. If you have to have a number that must be sequential, maintain a value independent of the autonumber in a one row table and lock it when you intend to grab it, increment it, use it (or discard as the case may be) and then update the one row table, then unlock it for general access.
----- Original Message ----- From: "David M. Blocker" <[EMAIL PROTECTED]> To: "RBASE-L Mailing List" <[EMAIL PROTECTED]> Sent: Tuesday, July 15, 2003 10:31 AM Subject: [RBASE-L] - Re: An autonumber trigger? > Dennis > > Good point about the Multi user issue. > > What about: > > 1. Column is NOT autonumbered > 2. Before bringing up the screen, set variable to a random number >= > 999,999,900 > 3. Check for any rows in master / detail tables with this variable. > 4. If are, redo steps 2 and 3 until unique > 5. Set column on form to this variable > 6. Trigger sets column to the next number. > > David Blocker > > ----- Original Message ----- > From: "Dennis McGrath" <[EMAIL PROTECTED]> > To: "RBASE-L Mailing List" <[EMAIL PROTECTED]> > Sent: Tuesday, July 15, 2003 9:42 AM > Subject: [RBASE-L] - Re: An autonumber trigger? > > > > Karen is seeing a long standing behavior. When you add a row to an > > autonumbered table, the autonumber is incremented. If you decide not to > > save the row, that number will be lost. obviously, if you later delete > > a row, that number is also lost. This is perfectly logical, > > understanding the alternatives. > > > > I tried the trigger idea. With a primary key, the insert triggers fire > > after the row is saved. But if the id column is null, the insert never > > succeeds, so the trigger does not fire. One could make the default > > value of the column zero, but I know for a fact that in a heavy traffic > > situation, some inserts will fail due to 2 or more users trying to > > insert rows in the table simultaneously. > > > > I'm wondering if there is a way to have a trigger detect when a row is > > created but never saved. If this were possible, one could save the > > lost numbers in a table, and assign one in an insert trigger, if one > > were available. Obviously, the new number which is now discarded would > > have to be added to the cache table. Because these numbers are always > > previously assigned autonumbers, they will never be larger than the > > next autonumber value. > > > > Dennis McGrath > > > > > > I think the primary key needs the autonumber, but when the insert > > trigger is fired > > > > > > Dennis McGrath > > > > > > > > > > > > --- Bernard Lis <[EMAIL PROTECTED]> wrote: > > > What's a missing autonumber. If the field is autonumbered it should > > > always get a number. Could it be that it appears numbers are > > > skipped? > > > That could happen if someone enters a row, then deletes it. > > > If this is the case and you don't want any skipped numbers you could > > > re-autonum before each entry. > > > sel max(col_name) into maxno from table > > > autonum col_name in table using (maxno+1) 1 nonum > > > > > > Bernie Lis > > > > > > > > > ----- Original Message ----- > > > From: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > > To: RBASE-L Mailing List <mailto:[EMAIL PROTECTED]> > > > Sent: Monday, July 14, 2003 10:18 AM > > > Subject: [RBASE-L] - An autonumber trigger? > > > > > > > > > Has anyone done this? A client has decided they don't like > > > the missing autonumbers. I have code to make sure a unique > > > number is assigned -- that's not a problem. But I was > > > wondering if there's a way to do it with a trigger, either > > > a before or an after trigger. > > > > > > The problem is that the column is a primary key. That means > > > it cannot be null. I was thinking of an 'after' trigger > > > where the row is added, and then afterwards the row is > > > updated with the correct number. But it couldn't be added > > > with a null in the column because the PK would be violated. > > > I could let it assign an autonumber, then do an update with > > > the 'correct' number but I would run the risk that the update > > > would be to a number higher than the autonumber and somewhere > > > down the line they wouldn't be able to add a new record > > > with the same autonumber (sorry, do you get that?) > > > > > > I'm trying to avoid putting code everywhere that they might > > > be adding a row into this table, plus I know they put rows > > > in from the r> prompt. > > > > > > > > > Karen > > > > > > > > > > > > > > >

