2010-06-12 3 views
6

Il semble que je ne puisse pas ajouter une contrainte non nulle ou supprimer une contrainte par défaut. Je voudrais ajouter une colonne datetime à une table et avoir toutes les valeurs définies à n'importe quoi (peut-être 1970 ou an 2000) mais il semble que je ne peux pas utiliser null sans défaut et je ne peux pas supprimer une valeur par défaut. puis-je ajouter cette colonne? (encore une fois juste un simple datetime non null)Ajouter une colonne DateTime non nulle à SQLite sans valeur par défaut?

Répondre

13

Au lieu d'utiliser ALTER TABLE ADD COLUMN, créez une nouvelle table qui a la colonne supplémentaire et copiez vos anciennes données. Cela vous libèrera des restrictions de ALTER TABLE et vous laissera avoir une contrainte NOT NULL sans valeur par défaut.

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 rapide et je ne peux pas le faire à partir d'une invite. –

+0

encore une fois. C'est une solution tellement simple et fonctionne très bien. Merci. (et ça marche vite aussi!) –

Questions connexes