2010-06-12 25 views
6

Parece que no puedo agregar una restricción no nula o eliminar una restricción predeterminada. Me gustaría agregar una columna de fecha y hora a una tabla y tener todos los valores establecidos en cualquier cosa (quizás 1970 o año 2000) pero parece que no puedo usar no nulo sin un valor predeterminado y no puedo eliminar un valor predeterminado una vez agregado. Entonces, ¿cómo? puedo agregar esta columna? (una vez más solo un datetime simple no nulo)¿Agregar columna nula DateTime a SQLite sin valor predeterminado?

Respuesta

13

En lugar de usar ALTER TABLE ADD COLUMN, cree una nueva tabla que tenga la columna extra y copie los datos anteriores. Esto le liberará de las restricciones de ALTER TABLE y le permitirá tener una restricción NOT NULL sin un valor predeterminado.

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 rápido y no puedo hacer esto directamente desde un aviso. –

+0

una vez más. Esta es una solución tan simple y funciona muy bien. Gracias. (¡y funciona rápido también!) –

Cuestiones relacionadas