2009-05-29 14 views
0

Ich muss eine vorhandene db-Tabelle in eine neue db-Tabelle konvertieren, die eine neue Spalte hinzufügt. Ich habe den folgenden SQL-Code, der den Standardwert dieser Spalte auf -1 festgelegt.Aktualisieren Sie eine Datenbanktabelle, um eine neue Spalte hinzuzufügen

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

Aber wie kann ich den Standardwert der Spalte festlegen, um für jede Zeile einzeln zu erhöhen?

+2

Welche SQL? Oracle, MySQL, SQL Server, ...? – n8wrl

Antwort

1

Dies hängt davon ab, welches DBMS Sie verwenden. Für MySQL können Sie verwenden:

ALTER TABLE x ADD COLUMN y INTEGER NOT NULL DEFAULT -1 AUTO_INCREMENT 

Siehe http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

+0

Nicht vertraut mit MySQL + AUTO_INCREMENT - wie kontrolliert er, welche Datensätze welche Werte erhalten? – n8wrl

+0

Zeilen werden inkrementierende Werte für y in der Reihenfolge ihres Einfügens zugewiesen. http://dev.mysql.com/doc/refman/5.0/en/alter-table.html – rodion

0

sind Werte automatisch inkrementierte für neue Zeilen AFTER Ihre zu Umwandlung? Wenn nicht, könnten Sie drei Schritte durchführen:

  1. ALTER die Tabelle mit Nullable Spalte
  2. UPDATE die neue Spalte mit dem, was Regeln, die Sie
  3. ALTER haben wieder NOT NULL zu setzen.
3

Es hängt von Ihrem DBMS ab. MySQL verwendet AUTO_INCREMENT:

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

PostgreSQL verwendet CREATE SEQUENCE:

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

SQL Server verwendet IDENTITY:

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

Als Randbemerkung, ich weiß nicht, warum stellst du dein d ein? Standard als -1. Warum würdest du deine ganzen Zahlen signieren lassen, wenn sie immer positiv sind? Sie sollten den Standardwert 0 für die Effizienz festlegen.

Verwandte Themen