Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

Post После Insert запись убегает в конец. Как на месте оставить   Найти похожие ветки 

 
Silver_   (2003-12-30 16:20) [0]

Если я делаю Insert между записями то после Post запись всё равно убегает в конец,
а мне нужно чтоб она оставалась там (между...)
Намереваюсь сделать так: Добавить еще одно поле при вставке, все что ниже
инкрементнуть (через SQL) (но возни тут..., да к тому-же после SQL DataSet.Close/Open
понадобится, а это никому не нужный тормоз).
Может кто знает путь по короче (проще)


 
Рамиль   (2003-12-30 16:23) [1]

Какой инкремент?!! Сделай индекс по полю которое должно быть отсортировано, а не по Primary Key


 
sniknik   (2003-12-30 17:07) [2]

примерно тоже самое уже советовал
http://delphimaster.net/view/3-1072571572/


 
Vlad   (2003-12-30 17:10) [3]


> sniknik © (30.12.03 17:07) [2]

Не все так просто. А если у соседних строк индексы 10 и 11, и тебе нужно между ними вставить запись ? :-)


 
sniknik   (2003-12-30 18:00) [4]

Vlad © (30.12.03 17:10) [3]
вот поэтому и предлагал дробное число и побольше, а целые для примера, удобнее.


 
Sandman25   (2003-12-30 18:05) [5]

Мы в таких случаях вообще CHAR(N) используем. Понадобилось вставить значение между 10 и 11 - пишешь 10.5, понадобилось между 10.1 и 10.2 - пишешь 10.11 При сортировке работает правильно, при связывании тоже. И что самое главное - памяти занимает не больше, чем DECIMAL, и индексы тоже используются.


 
Vlad   (2003-12-30 18:09) [6]


> sniknik © (30.12.03 18:00) [4]

Когда-то давно, на Оракле у меня была подобная задача. Таблица была небольшая, не более ста записей. Я решил эту проблему следующим образом:
добавлял в таблицу поле PREVIOUS_ID - ссылка на предыдущую запись.
Т.е. структура получалась следующая:
ID | PREVIOUS_ID | .....
Тогда при добавлении записи между двумя другими, достаточно было поменять ссылку у той записи, которая будет следующей после вставляемой.


 
Sandman25   (2003-12-30 18:20) [7]

[6] Vlad © (30.12.03 18:09)

Очень похоже на двусвязный список.


 
Vlad   (2003-12-30 18:27) [8]


> Sandman25 © (30.12.03 18:20) [7]

Фактически он и есть. Дело в том, что в Оракле есть удобный инструмент для работы с такими наборами данных, в других СУБД не встречал


 
Sandman25   (2003-12-30 18:29) [9]

[8] Vlad © (30.12.03 18:27)

Понятно.


 
sniknik   (2003-12-30 18:48) [10]

Vlad © (30.12.03 18:09) [6]
а сортировка тут по чему?

тут это лишнее (по моему) ведь нужно только на момент отображения, поле даже в базу не обязательно писать


 
Vlad   (2003-12-30 18:52) [11]


> sniknik © (30.12.03 18:48) [10]

Еще раз говорю, база была ORACLE.
Там есть такая конструкция:
select * from table start with <начальный_ID> connect by prior id=previous_id.
Таким образом можно без всякой сортировки вытащить все записи по иерархии, в порядке указанном в connect by
Вобщем-то в IB это тоже реализуется с помощью рекурсивной ХП


 
sniknik   (2003-12-30 18:57) [12]

> база была ORACLE.
мне это ничего не говорит, не работал, не ну теперь знаю, что так можно. :-)



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

Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
14-93692
anana][
2004-01-06 15:32
2004.01.29
Когда-то я спрашивал, как можно добавить юзера...


1-93438
Жук
2004-01-19 11:41
2004.01.29
Internal error: BC1930


1-93520
hStas32ExA
2004-01-18 17:54
2004.01.29
Компонент


3-93379
softmaster
2003-12-26 22:39
2004.01.29
Connection lost


14-93652
Думкин
2004-01-07 06:43
2004.01.29
С днем рождения! 7 января.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский