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

Вниз

Порядок полей в структуре таблицы.   Найти похожие ветки 

 
Aleks_S ©   (2004-01-07 16:07) [0]

Подскажите пожайлуста, как программно изменить порядок полей в структуре таблицы, т.е. не указать в каком порядке они будут выводиться в результате запроса, а изменить их порядок в самой БД. Спасибо.


 
Balu ©   (2004-01-07 16:33) [1]

По моему никак.
Я делаю через пересоздание таблицы (т.е. переименовываю исходную, создаю новую с тем же именем и с нужным порядком полей, а потом переношу данные из измененной таблицы. Ну и в конце DROP переименованной таблице).

Может кто знает путь по проще?


 
Polevi ©   (2004-01-07 17:09) [2]

а какой смысл в этом ?


 
Balu ©   (2004-01-07 17:38) [3]

Например, в ходе развития проектов надо добавить bit полей, и , например, их было 4-е (и стояли они в "середине" и надо добавить ещё парочку.


 
Anatoly Podgoretsky ©   (2004-01-07 18:40) [4]

Это твой смысл, в котором тоже нет особого смысла, а вот какой смысл у автора, пусть сам расскажет.


 
Aleks_S ©   (2004-01-07 21:04) [5]

А смысл такой.

Создается приложение для риелторской конторы. Поля и последовательность ввода информации для клиентов и объектов недвижимости должны настраиваться.

Вначале я создавал отдельную таблицу ClientAttrs[AttrID, Name, Order], где Name-имя клиента, а Order(int)- порядок в котором Namы будут выводиться.
Затем создается таблица Clients[ClientID, OrderID], которая по OrderID связывается с таблицей Orders.
Затем в таблицу ClientValues[ClientID, AttrID, Value) заносится введенная информация (ClientID-не индекс., AttrID - ID из ClientAttrs, Value - значение). Причем все значения Value приходится делать varchar. Не знаю как вам, а мне совсем не нравиться.

Вот если бы иметь одну таблицу, например Clients[ClientID, Attr1,..,AttrN], и иметь возможность модифицировать поля, было бы классно.

Просто с БД я работаю не так давно, поэтому не обессудьте. Сейчас разбираюсь с системными таблицами syscolumns и sysobjects, может чтонибудь получится.


 
sniknik ©   (2004-01-08 01:27) [6]

> Поля и последовательность ввода информации для клиентов и объектов недвижимости должны настраиваться.
последовательность ввода это одно, но никакак не связано с порядком полей в таблицах. легко можно редактировать 10поле первым после 3 и сразу 11-е. в любом порядке. или же в запросе составить нужный порядок. а физическое местоположение поля роли не играет. добавь в конец списка, чем плохо?

> Причем все значения Value приходится делать varchar. Не знаю как вам, а мне совсем не нравиться.
чем тебе не нравится тип varchar? аргументируй. хотябы в сравнении с чем? если вынужден цифровые или даты в тексте хранить это одно а если varchar по сравнению с char/text то почему? кождое для своих нужд свои достоинства/недостатки.


 
Balu ©   (2004-01-08 01:42) [7]

Aleks_S
Ты конечно молодец, ты этот вопрос и на sql.ru задал ДВАЖДЫ, на скольких форумах ещё отпостился?

Сначала разберись в сути своей задачи, а потом народу мозги пудри.


 
Ильш ©   (2004-01-08 09:33) [8]


> Сначала разберись в сути своей задачи, а потом народу мозги
> пудри.

Соврешенно согласен!
Неправильная постановка задачи - ведет к таким казусам!


 
Desdechado ©   (2004-01-08 12:53) [9]

порядок хранения и отображения полей - 2 большие разницы, как говорят в Одессе
Отображение настраивай как хочешь. Сохранять позиции конкретных колонок можешь как локально (типа каждый юзер винды сам под себя) или в БД (одно на всех или каждый юзер БД для себя).
А порядок полей при хранении не имеет никакого значения. Главное при этом не использовать запросов вида SELECT * FROM - это вообще дурной тон, да и к ошибкам ведет


 
Aleks_S ©   (2004-01-08 19:34) [10]

Сам разобрался.

В таблице syscolumns есть поле colorder, где можно изменять значения порядка полей при хранении. А какой таблице они принадлежат можно узнать из поля id, который соответствует id изменяемой таблицы в таблице sysobjects. (Извиняюсь за тафталогию.)

Balu, Ильш

> Ты конечно молодец, ты этот вопрос и на sql.ru задал ДВАЖДЫ,
> на скольких форумах ещё отпостился?
>
> Сначала разберись в сути своей задачи, а потом народу мозги
> пудри.


1. Вопрос я задал конкретный и объяснил для чего мне это нужно.
2. Ну и х.. что на SQL.ru вопрос тоже задал, все равно никто не ответил, пока сам не разобрался.
Советчики, мля.

P.S. Все равно всем спасибо, не все же время чужими мозгами работать.


 
Vlad ©   (2004-01-08 19:42) [11]


> Aleks_S © (08.01.04 19:34) [10]

ИМХО, изменять системные таблицы - нехорошая практика.
Когда нибудь нарвешься на неприятность.



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
1-2064
pirat
2004-01-19 19:32
2004.02.02
DoubleBuffered:=true и ThemeServices : палка о двух концах ?


1-2184
dreds
2004-01-21 10:37
2004.02.02
Как скопировать файл на диск(дискету,диск) с заменой уже существу


14-2361
Marser
2004-01-07 23:23
2004.02.02
Х/ф


3-1988
Алексеюшка
2004-01-08 13:19
2004.02.02
Не сохраняются изменения на сервере


14-2277
DenK_vrtz
2004-01-09 09:59
2004.02.02
Может это не скромно, но хочу поделиться своей радостью!