>Dear All,
 >I have a question. I need to store some data in Firebird database. One 
of the data is a running serial number, 0 to 999999. I try the Count SQL 
function, but sometimes
 >after INSERT function I get same number 2-3 times. After I try to make 
a tabel which contain an INTEGER field, and I update it, after I run a 
QUERRY, but the situation
 >is same.
 >Could you give me a good sollution how can the DB make a running 
serial number (not recurring)?
 >After each UPDATE I run a COMMIT.
 >The operating system is: Windows 7.
​>Please give me an answer ASAP.
 >Thank you very much!

Hi Richard!

The reason you get the same number is most likely because of 
simultaneous updates, i.e. that one transaction starts before the 
previous transaction commits. COUNT have never been a reliable way of 
getting a unique number. Moreover, COUNT will make things slow as the 
table grows.

Rather, try:

CREATE SEQUENCE <MyPreferredSequenceName>

and then in your insert statement include

NEXT VALUE FOR <MyPreferredSequenceName>

If for some reason a transaction rolls back, that particular sequence 
number is lost. Normally, this doesn't matter, but sometimes it may for 
financial applications where laws say that there should be no 
unexplained gaps.

HTH,
Set

PS! Your title "Need help in Firebird" is quite useless here, since 
almost 50% of the emails fit that description (the other 50% are 
answers). It would have been far better if it had been something like 
"My numbers duplicate, I need them to be unique"

Reply via email to