powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите новичку, как сделать автоинкремент
6 сообщений из 6, страница 1 из 1
Подскажите новичку, как сделать автоинкремент
    #32217779
Новичок123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо "нарисовать" БД в PowerDesigner. Все вроде бы отлично получается, но дошел до ключевых полей и не знаю, что надо делать дальше... Необходимо, чтобы при добавлении новой записи в поле PrimaryKey автоматически проставлялось уникальное значение. Я слышал, что надо использовать триггеры + сиквенсы, но как это сделать я не знаю... Подскажите, куда именно надо писать (в PowerDesigner) и ЧТО именно писать?
...
Рейтинг: 0 / 0
Подскажите новичку, как сделать автоинкремент
    #32217913
lgcpiton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй генератор и триггер. Читай доки.
...
Рейтинг: 0 / 0
Подскажите новичку, как сделать автоинкремент
    #32217989
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я работаю с IBExpert.
Создаю генератор GEN_CLIENT
Потом триггер:
ALTER TRIGGER CLIENT_T_BI0
ACTIVE BEFORE INSERT POSITION 0
AS
begin
/* Trigger text */
CLIENT_T.CLIENT_ID = gen_id(GEN_CLIENT,1);
end
...
Рейтинг: 0 / 0
Подскажите новичку, как сделать автоинкремент
    #32218067
Новичок123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что есть генератор?
Чем он отличается от сиквенсов?
Как его создать (подскажите код)?
ГДЕ все это можно прописать в PowerDesigner (чтобы работало)?
...
Рейтинг: 0 / 0
Подскажите новичку, как сделать автоинкремент
    #32223081
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генератор - от слова генерить.
Весь смысл - следующее данное всегда больше предыдущего (Максимум не помню) Используется для создания уникального идентификатора записи автматически - самой системой, чтобы тебе самому не париться.

создается так

Код: plaintext
CREATE GENERATOR GEN_CLIENT


Gen_ID_City - это название созданного генератора. Никаких опций нету - ты просто объявляешь генератор.

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

Код: plaintext
CLIENT_T.CLIENT_ID = gen_id(GEN_CLIENT, 1 );


где поле CLIENT_T.CLIENT_ID
функция gen_id()
и ее параметры - Имя генератора и Значение, на которое надо увеличить текущее состояние генератора...
Отсюда - эта запись значит, (смотри все описание кода создания триггера - выше)
Что этот триггер срабатывает в перед добавлением данных в таблицу и присваивает полю Client_ID значение +1

А про PowerDesigner - sorry не работал с ним.
...
Рейтинг: 0 / 0
Подскажите новичку, как сделать автоинкремент
    #32223154
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. Волков написал правильно(это я не про изумрудный город :-) но все же добавлю для ясности.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create generator your_id_generator


create trigger yourtable_bi for yourtable
before insert as
begin
   new.yourtable_id=gen_id(your_id_generator, 1 );
end


Что делает gen_id? Эта функция возвращает текущее значение генератора переданного ей в качестве первого параметра и увеличивает его на единицу. Причем работает она вне транзакций. 10 разных клиентов одновременно сделают gen_id с одним и тем же генератором и получат 10 разных згачений. откатить увеличение генератора невозможно. Возможно сделать
Код: plaintext
1.
set generator your_id_gen to XXX
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите новичку, как сделать автоинкремент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]