Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Sql - создание таблицы

1.8K
05 марта 2006 года
Azaze1
102 / / 08.01.2005
всем привет!
Есть mdb файл (office 2k), создаю программно через SQL запрос
там таблицу. точнее - пытаюсь создать. Запрос имеет примерно след. вид:
 
Код:
ADOQuery1->SQL->Add("CREATE TABLE  tab (f1 char(255),"
                                         "f2 char(255),"
                                         "f3 char(255),"
                                         "f4 char(255),"
                                         "f5 char(255),"
                                         "f6 char(255),"
                                         "f7 char(255),"
                //   "f8 char(255),"
                                         "f9 char(255))");

нужно чтобы все поля имели макс. длину. задаю везде char(255).
Если запустить этот код - всё будет нормально. Если раскомментировать предпоследнюю строку или добавить
ещё одно поле типа char(255), то при создании таблицы вылетает ексепшн - Слишком большая длина
записи. В принципе это обходится заменой типа поля с char на MEMO, но просто
интересно. Кто-нибудь знает, как это избежать? Можно конечно использовать
ALTER TABLE и создавать все поля в таблице в несколько заходов, но... ))
294
08 марта 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Azaze1


Alter Table теюбе, имхо, не поможет, т.к. это ограничение по ширине не для DDL, а для самой таблицы в MDB-базе.
Имхо, можно выйти из моложения так. Создать две таблицы вместо одной (если надо, то три), часть строк писать в одну таблицу, часть в другую и в запросе связывать их по первичному ключу. Я знаю, что связь One-to-One в базах данных моветон, но надо же как-то обходить ограничение...
Ещё варианты: перейти на M$DE или M$ SQL server, а лучше (если не боишься трудностей) на Oracle.
Ещё такой вариант: все строки хранить в табличке такой структуры:
CREATE TABLE str_tab (ref_tab integer, str_fx char(255));
и связывать её с основной таблицей tab one-to-many (т.е. one в tab -- many в str_tab).

1.8K
08 марта 2006 года
Azaze1
102 / / 08.01.2005
Цитата:
Originally posted by Plisteronх


ограничением со стороны самой mdb это быть никак не может, потому как руками в конструкторе можно создавать хоть ещё десяток полей такой длины. Мне кажется тут всё-таки проблема в sql запросе. ТОгда ALTER TABLE вполне м. сгодиться.
Я бы с удовольствием перешёл на Oracle, просто сейчас времени совсем нет чтобы с ним разбираться. кстати, оффтоп, ну да лана: если есть какие-либо ссылки на примеры работы с oracle или просто лит-ру - буду оч. признателен ))

294
09 марта 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Azaze1
Я бы с удовольствием перешёл на Oracle, просто сейчас времени совсем нет чтобы с ним разбираться. кстати, оффтоп, ну да лана: если есть какие-либо ссылки на примеры работы с oracle или просто лит-ру - буду оч. признателен ))


http://www.oracle.com/technology/documentation/index.html
http://www.google.ru/search?hl=ru&q=Oracle+%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
http://www.firststeps.ru/ --> там ссылка на SQL --> Oracle
http://www.citforum.ru/database/oracle.shtml
http://asktom.oracle.com/pls/ask/f?p=4950:1: -- Форум Тома Кайта для профессионалов ил почти профессионалов.
http://www.oracle.com/global/ru/oramag/index.html

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог