|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
Доброго времени суток, в данный момент пишу программу для работы с БД использую SQLITE столкнулся с проблемой, что нельзя удалить поле из записи.Нашел решение в гугле: создать новую таблицу скопировать все данные кроме того поля которое нужно удалить, потом удалить старую таблицу и переименовать новую на старую.Но мои познания в sql оставляют желать лучшего поскольку только начал учить.Заранее спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2014, 23:11 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
А вопрос в чем? Правильно нагуглил или нет? Правильно. В SQLite нельзя удалять поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2014, 23:39 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, вопрос в том как скопировать старую таблицу в новую ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2014, 23:46 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
Вот так и копировать как описано. Создать новую. Скопировать только то что нужно. Удалить старую. Переименовать новую. Показывай что ты уже сделал, чтобы мы поняли где ты застрял. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 00:01 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, я не очень понимаю как скопировать всё кроме одной колонки...Я в sql новичек так что прошу прощения за тупняки нашел что то вроде INSERT INTO table 2 SELECT * FROM table 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 00:30 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, ну и само собой CREATE TABLE table 2 потом копирую удаляю первую DROP TABLE table 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 00:34 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 00:46 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, спасибо сейчас изучу и попробую написать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 00:56 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, написал что то вроде insert into new_table select field2, field3, field4 from old_table; Хотел узнать правильно ли я составил запрос?и возможно ли написать данный запрос не перечисляя имена всех полей используя(*) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 09:28 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
pro100skif, имхо, перечислить поля придется в любом случае. попробуй поставить Firefox и в него расширение https://code.google.com/p/sqlite-manager/ откроешь в базу (не забывай про бэкапы) и можно удалять столбцы там весь код по созданию временных таблиц генерится автоматом. но нужно обратить внимания на индексы а то их можно потерять. также в sqlite твою задачу можно решить без insert-а Код: sql 1.
Но тут так-же ограничения/индексы при этом слетают - результат если он не для теста нужно доработать напильником :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 11:17 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
PPA, да мне в программе нужно это реализовать спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2014, 03:21 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
Это никогда не нужно реализовывать в программе. Если тебе это нужно сделать в программе, значит у тебя дизайн программы чрезвычайно плохой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2014, 05:55 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, ну я в программе использую sqlite а по другому там поле не удалить ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2014, 19:08 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
pro100skifWhite Owl, ну я в программе использую sqlite а по другому там поле не удалитьУдалять поля не нужно никогда . То что ты хочешь сделать (чтобы это ни было) можно решить намного проще и быстрее без удаления полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2014, 21:45 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
White Owl, ну у меня в функционале к курсовой написано что если пользователь захочет то он может удалить поле из БД ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2014, 01:02 |
|
Копирование таблицы (за исключением одного поля)
|
|||
---|---|---|---|
#18+
pro100skifWhite Owl, ну у меня в функционале к курсовой написано что если пользователь захочет то он может удалить поле из БДНу твое счастье что у тебя препод дурак если принимает такую курсовую. Как академическая задача, или просто "чтоб было" такая операция возможна. Но в реальности это не нужно и вредно. Любая операция изменяющая структуру таблицы это долгая и место-пожирающая операция. Для любой операции (добавление поля, удаление, смена типа) требуется полное копирование таблицы. В некоторых СУБД это уже есть на уровне движка, в некоторых эти операции предполагается делать вручную по уже описанному алгоритму. Но копирование таблицы делается всегда. Плюс там еще вагон и маленькая тележка проблем на уровне целостности данных. Конкретно по удалению поля: единственный случай когда это может пригодится, это если в данный момент ты занимаешься дизайном таблицы и еще не четко уверен что в ней нужно. Если же таблица некоторое время просуществовала и в ней накопились некие данные, то удаление поля тянет за собой потерю данных. Даже если ты эти данные перетащил предварительно в другое поле, ты все равно теряешь возможность сделать слепок исторических данных. Но еще большая проблема возникает в многопользовательском режиме. Если ты на сервере удалил из базы поле, а клиент Вася не обновил свою клиентскую программу и она обратилась к этому полю - Вася получит ошибку которая скорее всего приведет к результату "всех уволили". Намного проще (и честнее) просто перестать записывать новые данные в поле которое было признано ненужным. Собственно говоря именно так и работает большинство нормальных программ. Да, иногда для них делается рефакторинг, но это чрезвычайно затратная и сложная операция ... которая практически никогда не делается делается для продуктов проживших более десятка лет. И не важно сколько там "устаревших" полей. Стоимость их удаления будет астрономической. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2014, 02:23 |
|
|
start [/forum/topic.php?fid=54&msg=38665783&tid=2008784]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 402ms |
0 / 0 |