
|
If you were logged in you would be able to see more operations.
|
|
|
|
Environment:
|
Both Ubuntu Linux, Windows XP... Java 1.4.2_x and Java 1.5
|
|
Issue Links:
|
Duplicate
|
|
This issue duplicates:
|
|
DERBY-1495
Attempt to modify an identity column error after resetting identity column
|
|
|
|
|
|
|
|
| Issue & fix info: |
Release Note Needed
|
| Resolution Date: |
13/Nov/06 08:41 PM
|
|
I have a table which has an auto-generated key:
create table MyTable (
TableId INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
StringValue VARCHAR(20) not null,
constraint PK_MyTable primary key (TableId)
)
I verify that GENERATED BY DEFAULT is set:
SELECT * FROM
sys.syscolumns col
INNER JOIN sys.systables tab ON col.referenceId = tab.tableid
WHERE tab.tableName = 'MYTABLE' AND ColumnName = 'TABLEID'
I'm pulling in data for which I need to preserve the ID's:
INSERT INTO MYTABLE (TableId, StringValue) VALUES (1, 'test1')
INSERT INTO MYTABLE (TableId, StringValue) VALUES (2, 'test2')
INSERT INTO MYTABLE (TableId, StringValue) VALUES (3, 'test3')
In the absense of the Derby 10.2 feature (ALTER TABLE WITH RESTART X), I try to just change the INCREMENT BY value and insert a row so that I can reset the "next" key value:
ALTER TABLE MyTable ALTER TableId SET INCREMENT BY 50
Then I insert a "dummy" record (which I will delete later...) to move the key upwards:
INSERT INTO MYTABLE (StringValue) VALUES ('test53')
However, I can now no longer insert explicit values into the primary key like this:
INSERT INTO MYTABLE (TableId, StringValue) VALUES (-999, 'test3')
I get this error: SQL Exception: Attempt to modify an identity column 'TABLEID'.
Upon checking the sys.syscolumns table again, it verifies that the table no longer has an auto-generated key, but the TableId is still an identity column.
|
|
Description
|
I have a table which has an auto-generated key:
create table MyTable (
TableId INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
StringValue VARCHAR(20) not null,
constraint PK_MyTable primary key (TableId)
)
I verify that GENERATED BY DEFAULT is set:
SELECT * FROM
sys.syscolumns col
INNER JOIN sys.systables tab ON col.referenceId = tab.tableid
WHERE tab.tableName = 'MYTABLE' AND ColumnName = 'TABLEID'
I'm pulling in data for which I need to preserve the ID's:
INSERT INTO MYTABLE (TableId, StringValue) VALUES (1, 'test1')
INSERT INTO MYTABLE (TableId, StringValue) VALUES (2, 'test2')
INSERT INTO MYTABLE (TableId, StringValue) VALUES (3, 'test3')
In the absense of the Derby 10.2 feature (ALTER TABLE WITH RESTART X), I try to just change the INCREMENT BY value and insert a row so that I can reset the "next" key value:
ALTER TABLE MyTable ALTER TableId SET INCREMENT BY 50
Then I insert a "dummy" record (which I will delete later...) to move the key upwards:
INSERT INTO MYTABLE (StringValue) VALUES ('test53')
However, I can now no longer insert explicit values into the primary key like this:
INSERT INTO MYTABLE (TableId, StringValue) VALUES (-999, 'test3')
I get this error: SQL Exception: Attempt to modify an identity column 'TABLEID'.
Upon checking the sys.syscolumns table again, it verifies that the table no longer has an auto-generated key, but the TableId is still an identity column. |
Show » |
| No work has yet been logged on this issue.
|
|