[sql]BEGIN TRANSACTION;
CREATE TEMPORARY TABLE TEMP_TAB(a,b);
INSERT INTO TEMP_TAB SELECT a,b FROM TAB_TO_ALTER;
DROP TABLE TAB_TO_ALTER;
CREATE TABLE TAB_TO_ALTER(a,b,c);
INSERT INTO TAB_TO_ALTER SELECT a,b,null FROM TEMP_TAB;
DROP TABLE TEMP_TAB;
COMMIT;[/sql]
SQLite is a very ‘honest’ database, and will tell you when it is the best option and when it is not.

the funny thing is SQLite provide transactions where MySQL try to avoid them and added only at huge penalty bugs.