я следующий файл БД (DB1.db) содержит только одну таблицу:Sqlite: Создать новую таблицу для результатов запроса и сохранить оригинальную схему,
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE CARS (ID INT KEY NOT NULL, COMPANY CHAR(20) NOT NULL, COLOR CHAR(10) NOT NULL);
INSERT INTO "CARS" VALUES(111,'Hyundai','White');
INSERT INTO "CARS" VALUES(222,'BMW','Black');
INSERT INTO "CARS" VALUES(333,'Toyota','Blue');
COMMIT;
Для того, чтобы присоединиться между двумя таблицами в двух разных базах данных прилагаю DB1.db (и другой БД) в DB2.db:
sqlite> ATTACH DATABASE 'DB1.db' AS 'db1' ;
Информационный стол 'CARS' выглядит следующим образом:
sqlite> PRAGMA TABLE_INFO(CARS);
0|ID|INT KEY|1||0
1|COMPANY|CHAR(20)|1||0
2|COLOR|CHAR(10)|1||0
Следующий и последний, я хочу запустить запрос на прилагаемых таблицах и сохранить результат в новой таблице в DB2.db:
sqlite> CREATE TABLE RES1 AS SELECT ID,COMPANY FROM CARS WHERE ID='333';
И, как я ожидал, результат в новой таблице:
sqlite> SELECT * FROM RES1 ;
333|Toyota
Но новая информация таблица выглядит следующим образом:
sqlite> PRAGMA TABLE_INFO(RES1);
0|ID|INT|0||0
1|COMPANY|TEXT|0||0
и как вы можете видеть, я не потерял «COMPANY» тип столбца - это уже не «CHAR (20)» и столбец может быть пустым («NOT NULL» равен 0, а не 1, как и раньше).
Мой вопрос: Как я могу сделать операции выше (приложите и запрос привести в новую таблицу) и до сих пор не теряют первоначальную информацию таблицы?