Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Сложный вопрос по SQL   Найти похожие ветки 

 
Beglec ©   (2002-10-21 17:27) [0]

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

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

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


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

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


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

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


 
Johnmen ©   (2002-10-24 18:25) [3]

>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;


 
Val ©   (2002-10-24 18:28) [4]

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


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

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


 
Johnmen ©   (2002-10-24 18:32) [6]

>Val © (24.10.02 18:30)

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


 
MsGuns ©   (2002-10-24 20:18) [7]

>Val © (24.10.02 18:30)

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


 
Anatoly Podgoretsky ©   (2002-10-24 20:30) [8]

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

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

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


 
Jeer ©   (2002-10-24 21:46) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-45919
NONAME00
2002-11-02 23:53
2002.11.14
HLP


6-46043
delpher_gray
2002-09-05 18:46
2002.11.14
Нужен полный ответ, событие OnClientRead компоненту TServerSocket


4-46184
Termik
2002-10-04 12:13
2002.11.14
Хинты в меню


1-45814
nika_ufc
2002-11-05 02:50
2002.11.14
help please


1-45954
mas_alexey
2002-11-04 13:04
2002.11.14
FileExecuteWait