![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Счетчик (?) в Firebird [D7, Firebird]
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);