2010-06-12 6 views
6

Es sieht so aus, als könnte ich keine Nicht-Null-Bedingung hinzufügen oder eine Standard-Einschränkung entfernen. Ich würde gerne eine Datetime-Spalte zu einer Tabelle hinzufügen und alle Werte auf irgendetwas gesetzt haben (vielleicht 1970 oder Jahr 2000) aber es scheint, dass ich nicht null ohne einen Standard verwenden kann und ich kann einen Standard nicht einmal hinzugefügt in. So wie Kann ich diese Spalte hinzufügen? (wieder nur eine einfache Datetime nicht null)Fügen Sie SQLite keine DateTime-Spalte ohne Standardwert hinzu?

Antwort

13

Anstatt ALTER TABLE ADD COLUMN zu verwenden, erstellen Sie eine neue Tabelle mit der zusätzlichen Spalte, und kopieren Sie Ihre alten Daten. Dies befreit Sie von den Einschränkungen von ALTER TABLE und Sie haben eine NOT NULL Einschränkung ohne einen Standardwert.

ALTER TABLE YourTable RENAME TO OldTable; 
CREATE TABLE YourTable (/* old cols */, NewColumn DATETIME NOT NULL); 
INSERT INTO YourTable SELECT *, '2000-01-01 00:00:00' FROM OldTable; 
DROP TABLE OldTable; 
+0

wow schnell und ich kann dies nicht direkt von einer Aufforderung. –

+0

noch einmal. Dies ist eine so einfache Lösung und funktioniert sehr gut. Vielen Dank. (und es läuft auch schnell!) –