我需要將現有數據庫錶轉換爲添加新列的新數據庫表。 我有以下SQL代碼,它將此列的默認值設置爲-1。升級數據庫表以添加新列
// Insert new column for holding appWidgetIds
db.execSQL("ALTER TABLE favorites " +
"ADD COLUMN appWidgetId INTEGER NOT NULL DEFAULT -1;");
但是,我如何設置列的默認值爲每一行增加一個?
我需要將現有數據庫錶轉換爲添加新列的新數據庫表。 我有以下SQL代碼,它將此列的默認值設置爲-1。升級數據庫表以添加新列
// Insert new column for holding appWidgetIds
db.execSQL("ALTER TABLE favorites " +
"ADD COLUMN appWidgetId INTEGER NOT NULL DEFAULT -1;");
但是,我如何設置列的默認值爲每一行增加一個?
這取決於您正在使用哪個DBMS。對於MySQL,你可以使用:
ALTER TABLE x ADD COLUMN y INTEGER NOT NULL DEFAULT -1 AUTO_INCREMENT
不熟悉MySQL + AUTO_INCREMENT - 他如何控制哪些記錄獲取哪些值? – n8wrl 2009-05-29 17:04:53
現值自動增加新行後,您的轉換呢?如果沒有,你可以做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以提高效率。
哪個SQL? Oracle,MySQL,SQL Server ......? – n8wrl 2009-05-29 17:01:38