[ I moved this to 'database' too ]
> OK. Thats what I meant by an increment table. Do you experiance any
deadlock
> issues with this idea?
As long as you don't access the table inside a transaction, and don't care
if you lose the odd sequence number, you should be fine.
Implement something like this (except make it syntactically correct):
create table incrementTable( keyid : varchar, nextValue : integer );
function getNextSequence( keyid : String ) : integer
var originalValue : integer;
newValue : integer;
begin
repeat
with Query1 do
begin
SQL.Add('select nextValue from incrementTable
where keyid = :keyid');
Params[0].AsString := keyid;
Open;
originalValue := fieldByName('nextValue');
newValue := originalValue + 1;
SQL.Clear;
SQl.Add('update incrementTable
set nextValue = :newValue
where keyid = :keyid
and nextValue = :originalValue');
ParamsAsAppropriate :-)
ExecSQL;
// See if the update worked
until Query1.RowsAffected = 1;
result := newValue;
end;
Cheers,
Kerry S
PS: That's about right, isn't it Greg?
-----Original Message-----
From: Julien Thomas <[EMAIL PROTECTED]>
To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
Date: Wednesday, 3 November 1999 3:53 PM
Subject: RE: [DUG]: Generators - Sequences, and Identities
>We use a separate table to maintain the nextID for all the tables.
>
>> -----Original Message-----
>> From: Tony Blomfield [SMTP:[EMAIL PROTECTED]]
>> Sent: Wednesday, November 03, 1999 3:47 PM
>> To: Multiple recipients of list delphi
>> Subject: [DUG]: Generators - Sequences, and Identities
>>
>> Unless I have missunderstood, SQL7 has no equivolent of Interbases
>> generators, or Oracles Sequences? Instead it has the identity data type
>> which is akin to Access or paradox Autoincrement columns.
>>
>> The only time you seem to be able to see what your identity value was/is
>> is
>> immediatly following a insert statement.
>>
>> Coming form an Interbase background for the last few years, this idea of
>> identity columns looks very decadent, and extremely shortsighted of
>> MS/Sybase, and really surprised me that it is still like this.
>>
>> So what about the multi user situation. Can we guarantee that Select
>> Identity@@ will allways get the last identity for this specific user?
>>
>> What a dumb dumb idea. It more or less completely ignores the concept of
>> using surrogate keys.
>>
>> What do others do about this for MSSQL based Delphi Apps? It seems to me
>> that the only reasonable approach is to use an increment table, and
>> copmpletely abandon the Indentity concept. What are others doing here?
>>
>> Thanks,
>>
>> Tony.
>>
>>
-------------------------------------------------------------------------
-
>> -
>> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>> Website: http://www.delphi.org.nz
>
---------------------------------------------------------------------------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
---------------------------------------------------------------------------
New Zealand Delphi Users group - Database List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz