I am trying to rename a table by editing the sqlite_master directly. I do know there are a ‘ALTER TABLE … RENAME TO …’ syntax to do that. I just want to try it in this way. But I find that the ‘no such table’ error occurs while I try to drop the renamed table. Only I close the connection or start a new connection, the renamed table can be dropped. It seems that the memory inside this connection out of date and 'PRAGMA schema_version=X+1’ do not update it. I use theprocedure wrote at the bottom ofhttps://www.sqlite.org/lang_altertable.html. It may be a tricky way, but it may not be wrong. Does any one know about this?
Here is my test code: SQLite version 3.14.0 2016-07-26 15:17:14 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite .open test sqlite CREATE TABLE A (i int); sqlite select * from sqlite_master; table|A|A|2|CREATE TABLE A (i int) sqlite BEGIN sqlite PRAGMA schema_version; 1 sqlite PRAGMA writable_schema=ON; sqlite UPDATE sqlite_master set name='B', tbl_name='B', sql='CREATE TABLE B (i int)' where name='A'; sqlite PRAGMA schema_version=2; sqlite PRAGMA writable_schema=OFF; sqlite COMMIT; sqlite DROP TABLE B; Error: no such table: B sqlite .exit _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users