Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Счетчик (?) в Firebird [D7, Firebird]


Страницы:   1 2

Urvin ©   (2006-06-15 18:23:00) 

Можно ли средствами сервера или запроса организовать следующую затею:

при добавлении данных в одну из таблиц (Insert Into Table1...) в одно из полей средствами сервера записывается его номер. При добавлении еще одной записи - новый номер, увеличенный на единицу.
После записи этого номера информация в ячейке не можжет изменяться, т.е. если из таблицы удаляется какая-то запись, то у последующих записей их номер не изменяется. и, например, в таблице содержатся записи #331, #332, #333. Удалим последнюю. Следующая добавленная запись будет иметь номер #334....

???


Desdechado   (2006-06-15 20:40:00) [21]

kaif ©   (15.06.06 19:35) [6]
> в триггер не суй, если хочешь вставлять данные вручную
А вот это зря. Потому как в триггере всегда можно прописать
IF( new.id IS NULL ) THEN
new.id=gen_id(...);

А вот если без триггера, то ни одним скриптом нормально не вставишь данные.

> К тому же триггеры будут мешать при всяких закачках данных.
Проблемные триггеры при закачках можно отключать. Закачки ведь обычно явление редкое и не многопользовательское.


Urvin   (2006-06-15 19:57:00) [22]

спасибо большое! разобрался!


kaif   (2006-06-15 19:35:00) [23]

Только в триггер не суй, если хочешь вставлять данные вручную. Для запроса очередного значения генератора в IBX-компонентах есть специальное свойство Generator. Правда аиногда пдейт IBX нужно поставить, чтобы его увидеть. В этом свойстве указывается, какой генератор использовать при вставке новой записи, когда его запрашивать (OnPost) и в какому полу набора присваивать.
Если сделаешь в триггере - потом будешь мучиться с поиском только что добавленной записи (при Refersh датасета).
К тому же триггеры будут мешать при всяких закачках данных.
Кстати, значение генератора после таких закачек можно установить вручную:
SET GENERATOR <генератор> TO <значение>
И даже то ли в Firebird, то ли в Yaffil работала такая конструкция:
SET GENERATOR <генератор> TO SELECT MAX(<поле>) FROM <таблица>


DSKalugin   (2006-06-15 18:46:00) [24]

читай о триггерах и генераторах
http://www.realcoding.net/article/view/1578


Desdechado   (2006-06-15 18:45:00) [25]

значение хранится в базе в системных таблицах
у тебя данные очищаются в твоих таблицах, когда сервер отключаешь?

про создание - один раз

а еще почитал бы ты ibase.ru что ли...


Urvin   (2006-06-15 18:43:00) [26]

тогда вопрос - при отключении/включении сервера значение обнуляется?
должен ли я каждый раз при обращении создавать триггер и генератор?


Ega23   (2006-06-15 18:33:00) [27]

Обрати внимание на такую сущность, как генератор.


Desdechado   (2006-06-15 18:33:00) [28]

это называется генератор
в триггере перед вставкой пишешь
new.id=gen_id(genname, 1);


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо