powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ОбЪясните, как сделать в БД "IB"
6 сообщений из 6, страница 1 из 1
ОбЪясните, как сделать в БД "IB"
    #32357744
UserA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть в базе поле, скажем "сounts" типа "intenger".
Мне нужно чтоб при вставке новой записи в этом поле было уникальное число.

Как я понял мне нужно сделать генератор, и потом сделать триггер на событии
"Before Post" чтоб в определенное поле гененрировалось число.

Сделал генератор:
CREATE GENERATOR GEN_Count_ID;
SET GENERATOR GEN_Count_ID TO 0;

А как сделать триггер, и чтоб все работало?

Если можно подскажите подробней, пожалуйста.

P.S.
Для доступа к редактированию БД, пользуюсь IB Expert 2.0....
...
Рейтинг: 0 / 0
ОбЪясните, как сделать в БД "IB"
    #32357819
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
create trigger MYTABLE_BI for MyTable
before insert
as
begin
NEW.COUNTS = GEN_ID(GEN_Count_ID,1);
end

ОБ остальном советую почитать руководство все-таки :) И я бы рекомендовал тело как
begin
if (NEW.COUNTS is NULL) then
NEW.COUNTS = GEN_ID(GEN_Count_ID,1);
end
Более управляемо
...
Рейтинг: 0 / 0
ОбЪясните, как сделать в БД "IB"
    #32357830
A4Tech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создаешь триггер:

set term !!;
create trigger ИМЯ_ТРИГГЕРА for ИМЯ_ТАБЛИЦЫ before insert position 0
as
begin
IF (new.ИМЯ_ПОЛЯ IS NULL) THEN
new.ИМЯ_ПОЛЯ = GEN_ID(ИМЯ_ТВОЕГО_ГЕНЕРАТОРА, 1);
end !!
set term ; !!

и все - теперь поле ИМЯ_ПОЛЯ инкрементное
...
Рейтинг: 0 / 0
ОбЪясните, как сделать в БД "IB"
    #32357895
UserA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал триггер:
AS
begin
IF (new.DOC_ID IS NULL) THEN
new.DOC_ID = GEN_ID(GEN_DOC_ID, 1);
end

Где:
- DOC_ID - поле в БД;
- GEN_DOC_ID - название генератора;

Сохранил все, и попробывал создать в БД через программы свою новую запись, и поле не изменилось, на всех записях стоит число "0".

Мне нужно в коде программы внести изменения или нет?
Пишу на С++ В. использую компонент "IBDataSet1".
...
Рейтинг: 0 / 0
ОбЪясните, как сделать в БД "IB"
    #32357917
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты сделал вставку со значением поля 0, а не NULL, убери if
...
Рейтинг: 0 / 0
ОбЪясните, как сделать в БД "IB"
    #32358000
UserA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Работает :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ОбЪясните, как сделать в БД "IB"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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