2013-12-16 3 views
2

Я использую этот код формы переименования столбца или другой:SQLite удалить столбец

BEGIN; 
PRAGMA writable_schema = 1; 
UPDATE SQLITE_MASTER SET SQL = replace(SQL, '[id] INTEGER NOT NULL PRIMARY KEY', '[id] INTEGER') WHERE NAME = 'test_table'; 
PRAGMA writable_schema = 0; 
COMMIT; 

Но я не могу удалить:

BEGIN; 
PRAGMA writable_schema = 1; 
UPDATE SQLITE_MASTER SET SQL = replace(SQL, '[id] INTEGER NOT NULL PRIMARY KEY', 'DELETE THIS COLUMN') WHERE NAME = 'test_table'; 
PRAGMA writable_schema = 0; 
COMMIT; 

Этот код я знаю :) Не предлагайте.

BEGIN TRANSACTION; 
CREATE TEMPORARY TABLE t1_backup(a,b); 
INSERT INTO t1_backup SELECT a,b FROM t1; 
DROP TABLE t1; 
CREATE TABLE t1(a,b); 
INSERT INTO t1 SELECT a,b FROM t1_backup; 
DROP TABLE t1_backup; 
COMMIT; 

Edit: я нашел!

BEGIN; 
PRAGMA writable_schema = 1; 
UPDATE SQLITE_MASTER SET SQL = replace(SQL, '[id] INTEGER NOT NULL PRIMARY KEY**,**', '') WHERE NAME = 'test_table'; 
PRAGMA writable_schema = 0; 
COMMIT; 
+0

Вы можете ответить на свой вопрос и отметьте его ... – rene

+0

@rene Спасибо !!! – Zuhan

ответ

2
BEGIN; 
PRAGMA writable_schema = 1; 
UPDATE SQLITE_MASTER SET SQL = replace(SQL, '[id] INTEGER NOT NULL PRIMARY KEY**,**', '') WHERE NAME = 'test_table'; 
PRAGMA writable_schema = 0; 
COMMIT; 
+0

Это работает только для столбца «INTEGER PRIMARY KEY». –

Смежные вопросы