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

Вниз

Добавление автоинкрементного столбца   Найти похожие ветки 

 
Pascal ©   (2007-08-17 13:10) [0]

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

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

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

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

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

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

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

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


 
Anatoly Podgoretsky ©   (2007-08-17 13:19) [1]

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

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


 
Desdechado ©   (2007-08-17 13:21) [2]

ALTER TABLE
CREATE GENERATOR
CREATE TRIGGER


 
pascal ©   (2007-08-17 13:25) [3]


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


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


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

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


 
Anatoly Podgoretsky ©   (2007-08-17 13:36) [5]

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

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


 
Anatoly Podgoretsky ©   (2007-08-17 13:37) [6]

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

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


 
pascal ©   (2007-08-17 13:43) [7]


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


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

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

NUM
1
2
3

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


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

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

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

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

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


 
pavel_guzhanov ©   (2007-08-17 13:55) [9]


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


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


 
Anatoly Podgoretsky ©   (2007-08-17 13:56) [10]

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

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


 
pascal ©   (2007-08-17 13:57) [11]


> > [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:58) [12]

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


 
pascal ©   (2007-08-17 14:02) [13]

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


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

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


 
Desdechado ©   (2007-08-17 14:05) [15]

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


 
MsGuns ©   (2007-08-17 14:10) [16]

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

 Text := IntToStr(DataSet.RecNo);


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

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


 
pascal ©   (2007-08-17 14:12) [18]


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


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


 
pascal ©   (2007-08-17 14:14) [19]

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


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


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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.027 c
2-1187259357
DevilDevil
2007-08-16 14:15
2007.09.09
GetFileTime для выполняемого exe


15-1186756832
\/iKTOR
2007-08-10 18:40
2007.09.09
Улыбнитесь :)


6-1169017415
root
2007-01-17 10:03
2007.09.09
Залипания


1-1182844443
Makhanev Alexander
2007-06-26 11:54
2007.09.09
Пример батника для билдинга проектов...


15-1187164105
Pazitron_Brain
2007-08-15 11:48
2007.09.09
Когда-то давно слышал о такой игре...