2009-05-29 25 views
0

我需要將現有數據庫錶轉換爲添加新列的新數據庫表。 我有以下SQL代碼,它將此列的默認值設置爲-1。升級數據庫表以添加新列

// Insert new column for holding appWidgetIds 
db.execSQL("ALTER TABLE favorites " + 
    "ADD COLUMN appWidgetId INTEGER NOT NULL DEFAULT -1;"); 

但是,我如何設置列的默認值爲每一行增加一個?

+2

哪個SQL? Oracle,MySQL,SQL Server ......? – n8wrl 2009-05-29 17:01:38

回答

0

現值自動增加新行後,您的轉換呢?如果沒有,你可以做3個步驟:

  1. 改變表空列
  2. 更新的規矩,你有
  3. ALTER重新設置NOT NULL的新列。
3

這取決於您的DBMS。 MySQL的使用AUTO_INCREMENT

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    NOT NULL DEFAULT -1 AUTO_INCREMENT 

PostgreSQL的使用CREATE SEQUENCE

CREATE SEQUENCE favorites_seq; 
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    NOT NULL DEFAULT -1 nextval('favorites_seq') 

SQL服務器使用IDENTITY

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    IDENTITY(1,1) NOT NULL DEFAULT -1 

作爲一個方面說明,我不知道你爲什麼要設置你的d默認爲-1。爲什麼你會讓你的整數簽署,如果他們總是積極的?您應該使默認值爲0以提高效率。