db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1495) Attempt to modify an identity column error after resetting identity column
Date Wed, 20 Sep 2006 14:19:32 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1495?page=comments#action_12436243 ] 
            
Bryan Pendleton commented on DERBY-1495:
----------------------------------------

Thanks Kristian for investigating this problem. My hunch is that all the fun happens
in AlterTableConstantAction.modifyColumnDefault. The ALTER TABLE statement
doesn't provide all the information about the column's auto-increment behaviors so
the modifyColumnDefault() method has to merge the new behaviors specified on
the ALTER TABLE statement with the existing behaviors that the column already has.

My guess is that the problem lies in this merging process; the modifyColumnDefault()
method is not being careful enough to use the previous column behaviors in those
cases where the ALTER TABLE statement has not provided new behaviors.

Hope this helps.

> Attempt to modify an identity column error after resetting identity column
> --------------------------------------------------------------------------
>
>                 Key: DERBY-1495
>                 URL: http://issues.apache.org/jira/browse/DERBY-1495
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.1.0
>         Environment: Java 1.5.0_06-b05 on Linux Ubuntu 5.10. Derby version 10.2.0.3-412239
>            Reporter: Lars Gråmark
>            Priority: Minor
>
> When an identity counter is altered using the ALTER TABLE statement below, it seems as
if the GENERATED BY DEFAULT behavior is lost.
> The following statements will reproduce the error.
> CREATE TABLE MYTABLE (
>   id   INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL
>  ,col2 INT NOT NULL
> )
> -- Insert using an explicit value on the ID-field
> INSERT INTO MYTABLE(ID, COL2) VALUES(2, 2)
> -- Reset the identity field
> ALTER TABLE mytable ALTER COLUMN id RESTART WITH 3
> -- Try inserting another explicit value and the error below is thrown.
> INSERT INTO MYTABLE(ID, COL2) VALUES(4, 4)
> Error: SQL Exception: Attempt to modify an identity column 'ID'. , SQL State: 42Z23,
Error Code: 30000
> -- Although, this works fine
> INSERT INTO MYTABLE(COL2) VALUES(4)

-- 
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

       

Mime
View raw message