bruehlicke wrote:
Hi,

I would like a table something like

ID   BIGINT  (standart generated Identity generated always)
NAME VARCHAR(40) VERSION INT Now, I would like to be able to have the system automatically increase the version number, but also allow to use my own and of course if version 1, 2 and 3 are used and the user selects to delete version 3 and re-create he will not get verision 4 bu a new version 3

QUESTION: Is there a standard "pattern" we use for this kind of columns representing "versions" of a given thing ? Or is is good old "my own algorithm" to maintain this baby ?

B-)

Sorry about the garbled select outputs in the previous reply :-(

I have tried to improve the pasted select outputs in this email

I tried the following experiment with the jars of the latest trunk. If you notice after I insert a column with the identity column value as 5 the generated column value still continues from where it left the increment
previously.

ij> create table greetings(i int generated by default as identity, ch char(50));
0 rows inserted/updated/deleted
ij> insert into greetings values (DEFAULT, 'salut');
1 row inserted/updated/deleted
ij> insert into greetings(ch) values ('bonjour');
1 row inserted/updated/deleted
ij>  insert into greetings values (5, 'me');
1 row inserted/updated/deleted
ij>  insert into greetings values (DEFAULT,'you');
1 row inserted/updated/deleted
ij> select * from greetings;

I          |CH
--------------------------------------------------------------
1          |salut
2          |bonjour
5          |me
3          |you

ij>  insert into greetings values (DEFAULT, 'all');
1 row inserted/updated/deleted
ij> insert into greetings values (DEFAULT, 'all');
1 row inserted/updated/deleted
ij> insert into greetings values (DEFAULT, 'all');
1 row inserted/updated/deleted
ij> select * from greetings;

I          |CH
--------------------------------------------------------------
1          |salut
2          |bonjour
5          |me
3          |you
4          |all
5          |all
6          |all

7 rows selected

Also I  experimented with deleting a row

ij> delete from greetings  where i=6;
1 row inserted/updated/deleted
ij> insert into greetings values (DEFAULT, 'all');
1 row inserted/updated/deleted
ij> select * from greetings;

I          |CH
--------------------------------------------------------------
1          |salut
2          |bonjour
5          |me
3          |you
4          |all
5          |all
7          |all

7 rows selected

So the value continues from 7 and not from 6 as you expect.

The document here http://db.apache.org/derby/docs/10.2/ref/rrefsqlj37836.html that generated by
always does not guarantee  uniqueness.

You could use a primary key or unique constraint on a column to guarantee uniqueness.

I found http://db.apache.org/derby/docs/10.2/ref/rrefsqlj37836.html very informative. I am not sure if a newer version of the document exists. I guess you could refer that for more information.

Narayananan

Reply via email to