Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сложный вопрос по SQL [D6, Paradox]


Beglec ©   (2002-10-21 17:27:00) 

1. Как сделать так, что бы при помощи SQL
поле Name Char(30) превратить в поле Name Char(40);
Как это можно сделать, не теряя данных.

Да и такой чисто технологический фопрос.
Каким образом SQL добавляет поле в базу данных не теряя данных?
То есть, (Движок SQL) переписывает весь файл физически заного или есть какой либо алгоритм, для переписЬки :)

Зарнее спосибо за помощь


Jeer   (2002-10-24 21:46:00) [1]

Для Paradox МОЖНО использоватьнизкоуровенные функции dbi (BDE)


Anatoly Podgoretsky   (2002-10-24 20:30:00) [2]

Johnmen © (24.10.02 18:25)
Хотел то же самое (близкое) подсказать, ты опередил, я просто суммирую.
Для любого типа баз, реструктировать можно в 6 шагов

1. создать новое временное поле нужной струтуры
2. скопировать в него из старого
3. удалить старое поле
4. создать его опять но уже должного типа
5. скопировать из временного
6. удалить временное

Для парадокс правильнее использовать процедуры и функции BDE


MsGuns   (2002-10-24 20:18:00) [3]

>Val © (24.10.02 18:30)

Просто, как все гениальное !))


Johnmen   (2002-10-24 18:32:00) [4]

>Val © (24.10.02 18:30)

Да, уже пора домой....:)))


Val   (2002-10-24 18:30:00) [5]

>Johnmen © (24.10.02 18:25)
:) пойду домой, отдохнуть надо, похоже.


Val   (2002-10-24 18:28:00) [6]

>Beglec © (21.10.02 17:27)
для переноса достаточно создать не копию таблицы, а таблицу вида ID, Field_Name, затем перекачать данные, изменить столбец, перекачать обратно, удалить временную таблицу.


Johnmen   (2002-10-24 18:25:00) [7]

>asmith (24.10.02 18:19)

Причем здесь MS SQL Server ???

>Beglec ©

ALTER TABLE T ADD tmp char(40);
UPDATE T SET tmp=Name;
ALTER TABLE T DROP Name;
ALTER TABLE T ADD Name char(40);
UPDATE T SET Name=tmp;
ALTER TABLE T DROP tmp;


asmith   (2002-10-24 18:19:00) [8]

Если не нужно менять структуру таблицы, а только изменить длину поля в запросе, то в MS SQL Server можно делать так:
select Name, convert(varchar(40), Name) from Table


Дед Макар   (2002-10-21 17:52:00) [9]

Это действительно очень сложный вопрос... Гуру баз данных обычно решают его, читая синтаксис SQL-запроса ALTER TABLE для конкретной БД или создают новую таблицу, практически повторяющую исходную за исключением нужного столбца и выполняют запрос INSERT INTO NewTable SELECT * FROM OldTable (если уж хочется понадежнее :) )


Наверх

Титульная страница Поиск, карта сайта Написать письмо