![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление автоинкрементного столбца
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 СУБД