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

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

Добавление автоинкрементного столбца


Pascal ©   (2007-08-17 13:10:00) 

Привет всем. Помогите с проблемой!

Нужно добавить в таблицу столбец, который бы показывал порядковый номер записи.

Есть таблица t1, например:

NAME  ADDRESS   TEL
z        город_      9999
b        деревня    8888
i         деревня    3333

Какие операции нужно выполнить, что бы получить таблицу

ID  NAME  ADDRESS   TEL
1   z        город_      9999
2   b        деревня    8888
3   i         деревня    3333

Все операции проводятся только в консоли interBase.

Всем спасибо!


sdts   (2007-08-17 14:21:00) [1]


> pascal ©   (17.08.07 14:14) [19]

интересно, какое?


pascal   (2007-08-17 14:14:00) [2]

Решение найдено. Всем спасибо!


pascal   (2007-08-17 14:12:00) [3]


> Desdechado ©   (17.08.07 14:03) [14]
> > значения индексных полей вирируются от 1 до 100 000 000
> 000 000 000
> Что это за тип данных? И как его поддерживает ODBC?


java получает их как строковые. Такие диапазоны целым числам и не снились.


MsGuns   (2007-08-17 14:11:00) [4]

Прошу прощения, не обратил внимание на фразу про консоль


MsGuns   (2007-08-17 14:10:00) [5]

Если надо показывать номер текущей записи в ОТОБРАЖАЕМОМ наборе данных (полученный ЛЮБЫМ способом, но поддерживающий двунаправленный курсор), то достаточно в обработчике OnGetText ЛЮБОГО поля датасета, содержимое которого не нужно отображать, написать:

 Text := IntToStr(DataSet.RecNo);


Desdechado   (2007-08-17 14:05:00) [6]

> При попытке выбрать все значения вылетает исключение с ошибкой
> нехватки памяти
Обычно "все значения" не нужны. Но если очень надо, достаточно использовать однонаправленный Unidirectional датасет.


Desdechado   (2007-08-17 14:03:00) [7]

> значения индексных полей вирируются от 1 до 100 000 000 000 000 000
Что это за тип данных? И как его поддерживает ODBC?


pascal   (2007-08-17 14:02:00) [8]

спасибо за перенос в раздел начинающих. )


Anatoly Podgoretsky   (2007-08-17 13:58:00) [9]

Вообще что хочешь сделать, пора карты раскрывать, только не надо про номер записию


pascal   (2007-08-17 13:57:00) [10]


> > [7] pascal ©   (17.08.07 13:43)
> > Я пробовал такой вариант:
>
> Не исключено, что методом тыка ты найдешь таки нужный вариант.
>  Но проще почитать учебник.
>
> > [0] Pascal ©   (17.08.07 13:10)
> > бы показывал порядковый номер записи.
>
> Какой смысл ты вкладываешь в порядковый номер и что ждешь
> от его использования?


Задача, на самом деле много сложнее. Я через ODBC работаю с базой iBase на несколько гигов. При попытке выбрать все значения вылетает исключение с ошибкой нехватки памяти. В таблицах значения индексных полей вирируются от 1 до 100 000 000 000 000 000

всего записей порядка 20 миллионов, но их индексы разброса в вышеуказанном деапозрне.  Если задать соответствие, то можно будет делать выборки по частям.

Но решение я правда уже нашел.

select * from t1 rows 1000000 to 2000000

:-)


Anatoly Podgoretsky   (2007-08-17 13:56:00) [11]

> pascal  (17.08.2007 13:43:07)  [7]

У тебя ошибка в запросе


pavel_guzhanov   (2007-08-17 13:55:00) [12]


> Desdechado ©   (17.08.07 13:21) [2]
> ALTER TABLE
> CREATE GENERATOR
> CREATE TRIGGER


Здесь полный ответ.


Sergey13   (2007-08-17 13:48:00) [13]

> [7] pascal ©   (17.08.07 13:43)
> Я пробовал такой вариант:

Не исключено, что методом тыка ты найдешь таки нужный вариант. Но проще почитать учебник.

> [0] Pascal ©   (17.08.07 13:10)
> бы показывал порядковый номер записи.

Какой смысл ты вкладываешь в порядковый номер и что ждешь от его использования?


pascal   (2007-08-17 13:43:00) [14]


> Anatoly Podgoretsky ©   (17.08.07 13:36) [5]
> > Desdechado  (17.08.2007 13:26:04)  [4]
>
> И это не порядковый номер, сказано только xBase


Я пробовал такой вариант:

Создал вторую таблицу, в которой записан ряд порядковый чисел

NUM
1
2
3

и пробовал их объединить в одну таблицу, но у меня не получилось. Т.е. он выдает все возможное сочетания всех записей таблиц. Вот если бы как ни будь соединить их в единственном числе...


Anatoly Podgoretsky   (2007-08-17 13:37:00) [15]

> pascal  (17.08.2007 13:25:03)  [3]

Если оно не автоинкриментное, то Integer или его эквивалент, номера записей будешь отслеживать сам, правда это и не возможно, но все равно сам.


Anatoly Podgoretsky   (2007-08-17 13:36:00) [16]

> Desdechado  (17.08.2007 13:26:04)  [4]

И это не порядковый номер, сказано только xBase


Desdechado   (2007-08-17 13:26:00) [17]

Это не номер записи, а ее идентификатор, первичный ключ.


pascal   (2007-08-17 13:25:00) [18]


> Anatoly Podgoretsky ©   (17.08.07 13:19) [1]
> > Pascal  (17.08.2007 13:10:00)  [0]
>
> Автоинкриментный и номер записи это разные несовместимые
> вещи.
> Номера записей поддерживают только xBase СУБД


Возможно, я не так выразился, но мне нужно именно то, что бы на в каждой записи было бы поле, которое показывало ее порядковый номер. Именно так, как в приведенном мною примере. Пусть оно не будет автоинкрементное.


Desdechado   (2007-08-17 13:21:00) [19]

ALTER TABLE
CREATE GENERATOR
CREATE TRIGGER


Anatoly Podgoretsky   (2007-08-17 13:19:00) [20]

> Pascal  (17.08.2007 13:10:00)  [0]

Автоинкриментный и номер записи это разные несовместимые вещи.
Номера записей поддерживают только xBase СУБД


Наверх

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