MyTetra Share
Делитесь знаниями!
Как реализовать действия неподдерживаемых операторов команды ALTER TABLE в SQLite3
Время создания: 25.12.2012 11:55
Раздел: Компьютер - Программирование - SQL - SQLite3
Запись: xintrea/mytetra_syncro/master/base/1356422142a84zhc8wf7/text.html на raw.github.com

В документации по SQLite указано, что пропущены (не поддерживаются) такие типы операторов ALTER TABLE как DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT и так далее. Это не значит, что DROP COLUMN, ALTER COLUMN нельзя реализовать в SQLite.

Переименованиe столбца temp на new в тaблице Temper можно реализовать так:

BEGIN TRANSACTION;

-- создаем временную таблицу

CREATE TEMPORARY TABLE Temper_backup(name,temp);

-- копируем данные из таблицы Temper во временную таблицу Temper_backup

INSERT INTO Temper_backup SELECT name,temp FROM Temper;

-- удаляем таблицу Temper

DROP TABLE Temper;

-- создаем таблицу Temper

CREATE TABLE Temper(name,new);

-- вставляем данные из таблицы Temper_backup в таблицу Temper

INSERT INTO Temper SELECT name,temp FROM Temper_backup;

-- удаляем таблицу Temper_backup

DROP TABLE Temper_backup;

COMMIT;

Этим же способом можно изменить тип поля.

Удалить столбец temp в тaблице Temper можно так:

BEGIN TRANSACTION;

-- создаем временную таблицу Temper

CREATE TEMPORARY TABLE Temper_backup(name);

-- копируем данные из таблицы Temper во временную таблицу Temper_backup

INSERT INTO Temper_backup SELECT name FROM Temper;

-- удаляем таблицу Temper

DROP TABLE Temper;

-- создаем таблицу Temper

CREATE TABLE Temper(name);

-- вставляем данные из таблицы Temper_backup в таблицу Temper

INSERT INTO Temper SELECT name FROM Temper_backup;

-- удаляем таблицу Temper_backup

DROP TABLE Temper_backup;

COMMIT;

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования