Hi!
I don't know if this has been already discussed, most probably yes. But are 
there any plans to implement the possibility to add constraints to existing 
tables? And I'm not necessarily asking for full-blown functionality. Currently 
to do that you have to drop the table and recreate it again with the 
constraint. Possibly you could rename it, create the new table with the 
constraint, transfer data manually from old to new and then drop the old table? 
I'd be fine if this functionality behaves like that, I'd be fine even if it 
just drops the table and then recreates it again, losing everything stored 
inside (if it's noted in the docs with big shiny red letters that that's how it 
works).
Some background... I'm a developer and we use the concept of migration files to 
make changes to the DB structure. So, if a feature needs changes in the DB, we 
write a new migration file which migrates its structure from the old version to 
the new one. We support different DB engines to feed the service and the 
migration logic is abstracted by a library which detects what DBMS is running 
and constructs the appropriate SQL for it. We use SQLite just for running our 
tests quickly while developing, proper instances mostly run Postgres or 
something similar. When we start our tests, the DB is empty and then migrations 
are run one by one to reach the needed DB structure for the application. This 
is why if you were to implement adding constraints which completely wipe the 
table, I personally wouldn't care (if that's easier for you). What's causing us 
problems right now is that in our migration files we have to write something 
approximately like { if (dbType == SQLite) { "DROP TABLE...; CREATE 
TABLE...CONSTRAINT...;" } else { "ALTER TABLE ... ADD CONSTRAINT ...;" } }. If 
we could use the same way of altering the DB for SQLite as for other databases, 
it would help us so so much. Migrations are also used to update existing 
systems with new releases whose data mustn't be wiped so going for the SQLite 
approach with non-SQLite databases isn't an option. We're occasionally weighing 
if SQLite is worth the hassle or should we just drop it and use something like 
Postgres even for running our local tests, even though it would be slower to 
run the tests (in case of a Dockerized environment) and more of a hassle to set 
up. I'm sure we're not the only devs out there with these kinds of problems / 
hassles.
So... Is this something we can look forward to in the near / not so near 
future? Or did you already decide against it?

Best regards,Marko
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to