Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];
ВнизДобавление автоинкрементного столбца Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.325 c