2013-02-08 66 views
1

我正在使用Netbeans,使用Java編寫並使用Derby。將我的主鍵更改爲自動遞增 - JavaDB

我在APP中有一個名爲PERSON的表格。在人,我有一個名爲PID具有以下屬性欄:

Name: PID 
Nulls allowed: [ ] 
Data type: NUMERIC 
Column size: 4 
Decimal digits: 0 
Position: 1 
Part of a primary key: [/] 
Part of an index: [/] 

我使用的元數據isAutoIncrement功能檢查,如果它已經自動遞增,這是不是!

使用下面的SQL命令來改變它,我曾經試圖:

我相信這可能不是德比:

ALTER TABLE APP.PERSON ALTER PID NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY 
(START WITH 1, INCREMENT BY 1); 

在檢查Oracle網站,我找到了正確的語法:

ALTER TABLE APP.PERSON ALTER PID SET INCREMENT BY 1; 

我甚至嘗試前導零:

ALTER TABLE APP.PERSON ALTER PID SET INCREMENT BY 0001; 

沒有一個是有工作,我得到的最後兩個錯誤是:

ALTER TABLE '"APP"."PERSON"' specified attributes for column 'PID' that are 
not compatible with the existing column. 

正確的語法的任何想法?

回答

1

這是我一般都做到這一點:

  1. 創建新表,與所需要的模式,包括生成的主鍵
  2. 問題一個INSERT INTO FROM oldtable來填充新newtable的選擇列從舊錶
  3. 表的數據重命名舊錶,一些臨時的名稱,如table_soon_to_be_deleted
  4. 重命名新表所需的表名
  5. d o進行一些測試以確保我的行爲符合預期
  6. 刪除我在步驟(4)中重命名的舊錶。