[ http://issues.apache.org/jira/browse/DERBY-783?page=all ]

Mamta A. Satoor updated DERBY-783:
----------------------------------

    Attachment: Derby783AlterTableRestartWith011706.txt

Attaching a new review package because few files have changed since the time 
the last review package was generated. Can a commiter please commit this?

> Enhance ALTER TABLE syntax to allow users to change the next value to be 
> generated for an identity column
> ---------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-783
>          URL: http://issues.apache.org/jira/browse/DERBY-783
>      Project: Derby
>         Type: New Feature
>   Components: SQL
>     Versions: 10.2.0.0
>     Reporter: Mamta A. Satoor
>     Assignee: Mamta A. Satoor
>  Attachments: Derby783AlterTableRestartWith010306.txt, 
> Derby783AlterTableRestartWith011706.txt
>
> Derby allows a user to change the interval between consecutive values of the 
> identity column using ALTER TABLE. But there is no way to change the next 
> value to be generated for an identity column. Such a support in Derby will be 
> very handy for tables with identity column defined as GENERATED BY DEFAULT 
> and with a unique key defined on them. Column defined with GENERATED BY 
> DEFAULT allows system to generate values for them or allows the user to 
> manually supply the value for them. A column defined this way is very useful 
> when the user might want to import some data into the generated column 
> manually. But this can create problems when the system generated values 
> conflict with manually inserted values.
> eg
> autocommit on;
> create table tauto(i int generated by default as identity, k int); 
> create unique index tautoInd on tauto(i); 
> insert into tauto(k) values 1,2;  -- let system generate values for the 
> identity column
> -- now do few manual inserts into identity column
> insert into tauto values (3,3); 
> insert into tauto values (4,4); 
> insert into tauto values (5,5); 
> insert into tauto values (6,6); 
> insert into tauto values (7,7); 
> insert into tauto values (8,8); 
> -- notice that identity column at this point has used 1 through 8
> -- now if the user wants to let the system generate a value, system will 
> generate 3 but that is already used and hence
> -- insert will throw unique key failure exception. System has consumed 3 at 
> this point.
> insert into tauto(k) values 9;
> -- the insert above will continue to fail with the unique key failure 
> exceptions until system has consumed all the values till 8
> -- If we add ALTER TABLE syntax to allow changing the next value to be 
> generated, then user can simply use that to change
> -- next value to be generated to 9 after the manual inserts above and then 
> insert into tauto(k) values 9 will not fail
> SQL standard syntax for changing the next generated value
> ALTER TABLE <tablename> ALTER <columnName> RESTART WITH integer-constant

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to