Вставка строки в таблицу

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Sergal
Сообщения: 1
Зарегистрирован: 26 фев 2008, 23:29

Вставка строки в таблицу

Сообщение Sergal » 27 фев 2008, 08:53

Доброго времени суток!

Firebird только начал пользовать.
Сталкнулся с проблемой.
Помогите разобраться.
Имеется три связанных таблицы:

Tab1 Tab2 Tab3
======= ======= =======
Pk T1_1--- Pk T2_1--- T3_1
T1_2 \ T2_2 \ T3_2
T1_3 \------Fk T2_3 \-------Fk T3_3

У таблиц каскадное удаление.
У Tab3 нет первичного ключа.
В таблице Tab3, при выборе строки в Tab2, отображаются данные,
к примеру, 8 строк.
Как вставить данные, например, между 4-й и 5-й строчкой?

Когда вставляю данные методом Insert(), данные вставляются
и отображаются как надо. Но после обновления набора данных
строчка появляется в конце, как в Append(), а не между 4-й и 5-й.

voltron
Сообщения: 6
Зарегистрирован: 27 дек 2007, 11:27

Сообщение voltron » 27 фев 2008, 09:06

Такое невозможно в принципе. В базах данных нет понятия "порядок строк", новая строка ВСЕГДА добавляется в конец таблицы. Сортировка и вывод в определенном порядке - это задача запроса.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 27 фев 2008, 14:04

1. Не использовать TIBTable
2. Использовать ORDER BY в запросе
3. Если чего непонятно - читать тут. Если эту статью не читал - обязательно всю статью, с начала.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 фев 2008, 00:57

voltron писал(а):новая строка ВСЕГДА добавляется в конец таблицы.
новая строка всегда добавляется НА СВОБОДНОЕ МЕСТО в страницах данных таблицы. Поэтому может попасть и в конец, и в начало, и в середину. Остальное корректно.

Ответить